SQL Server 的Collate子句的问题….
2018-02-08 11:19 Evan 阅读(44) 评论(0) 收藏 举报我用到fn_split函数的时候遇到了点问题。
select code,name from dic_specials where code in (select splitvalue from dbo.fn_split('HF,AB',','))
出现:
Server: Msg 446, Level 16, State 9, Line 1 Cannot resolve collation conflict for equal to operation.
查询一些资料和SQL Server关于Collate的问题:
http://www.itpub.net/748888.html http://www.dedecms.com/web-art/shujuku/MS_SQLServer/20070118/38037.html
解决了,就是在定义临时表的时候,对字段最好使用 COLLATE database_default子句,
比如修改后的函数fn_split:
ALTER FUNCTION [dbo].[fn_split] ( @splitString varchar(8000), @splitChar varchar(8000) ) returns @T table ( splitValue varchar(8000) COLLATE database_default ) AS begin declare @type int, @tl varchar(8000), @index bigint, @splitCharLength int set @splitString = ltrim((rtrim(@splitString))) set @index = charindex(@splitChar, @splitString) set @splitCharLength = len(@splitChar) while(@index<>0) begin set @tl = ltrim(rtrim(left(@splitString, @index-1))) if @tl<>'' insert into @T values(@tl) set @splitString = right(@splitString, len(@splitString) - @index - (@splitCharLength - 1)) set @index = charindex(@splitChar, @splitString) end if @splitString is not null insert into @T values(@splitString); return; end
浙公网安备 33010602011771号