首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

截取字符串 表名,该怎么解决

2012-03-23 
截取字符串 表名dbo.tab1dbo.[tab1][dbo].[tab1]这样写表名都是可以的假设上面三个都是字符串, 怎么才能截

截取字符串 表名
dbo.tab1 
dbo.[tab1] 
[dbo].[tab1]
这样写表名都是可以的

假设上面三个都是字符串, 怎么才能截取到真正的表名tab1?
相当于是要写一个函数

SQL code
create function dbo.GetTableName(    @tableName  nvarchar(250))returns nvarchar(150)as--.........


我遇到的难点是 sql server 貌似没有 RevCHARINDEX 函数; 而 PATINDEX 则存在 搜索通配符字符 的难题
SQL code
select PATINDEX ( '%[%]', '[schema1].[mytab2]' )
 


[解决办法]
SQL code
DECLARE @str VARCHAR(20)SET @str = '[dbo].[tab1]'IF (CHARINDEX('.',@str) > 0) SET @str = STUFF(@str,1,CHARINDEX('.',@str),'')IF (CHARINDEX('[',@str) > 0) SET @str = STUFF(@str,1,CHARINDEX('[',@str),'')IF (CHARINDEX(']',@str) > 0) SET @str = LEFT(@str,CHARINDEX(']',@str)-1)SELECT @str
[解决办法]
SQL code
if not object_id('tb') is null    drop table tbGoCreate table tb([col] nvarchar(18))Insert tbselect N'[schema1].[mytab2]' union allselect N'[myschema].[tab1]' union allselect N'dbo.tab1'GoSelect replace(replace(right([col],len([col])-charindex('.',[col])),']',''),'[','')from tb/*----------------------------------------------------------------------------------------------------------------mytab2tab1tab1(3 個資料列受到影響)*/
[解决办法]
SQL code
-- sql 2005select PARSENAME('dbo.tab1',1);-- sql 2000declare @tabname sysname;set @tabname='dbo.tab1';select right(@tabname,charindex('.',reverse(@tabname))-1); 

热点排行