详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak--方法0:动态SQL法 declare @s varchar(),@sql varchar() set @s='1,2,3,4,5,6,7,8,9,10' set @sql='select col='''+ replace(@s,',',''' union all select ''')+'''' PRINT @sql exec (@
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ),)) )) as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@SourceSql) begin )) ,len(@SourceSql)-@i) set @i=charindex(@StrSeprate,@SourceSql) end if @SourceSql
),)) )) as begin ) set @SourceSql=@SourceSql+@StrSeprate while(@SourceSql<>'') begin )) insert @temp values(@ch) ,),'') end return end 测试: select * from dbo.f_splitstr('1,2,3,4',',')aa dbo.f_splitstr('1,2,3,4',',') bb
select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了.left()是sql函数.select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINARY.
今天同事问我关于SQL Server在字符串尾随着空格时进行字符串对比的做法.关于这个问题正好在这里讲一下,就是SQL Server是按照ANSI/ISO SQL-92中的定义做字符串对比的. 在KB316626中已经做了阐述,就是SQL Server对待这种有尾随空格的字符是会做自动截断尾随空格再对比的. 这里做个实验吧 SELECT * FROM ( SELECT 'A' A UNION ALL SELECT 'A ' UNION ALL SELECT 'A ' UNION ALL SELE
1.Split SQL Server 2008 新语法: DECLARE @str VARCHAR(MAX) SET @str = REPLACE(@teeIDs, ',', '''),(''') SET @str = 'SELECT * FROM (VALUES(''' + @str + ''')) AS V(A)' EXEC (@str) 据说这个SQL语法是SQL Server 2008的. SELECT * FROM (VALUES(1),(2),(3)) AS V(A) 配合个临