Sql server 在存储过程中添加排序规则的位置

Sql server 在存储过程中添加排序规则的位置,sql-server,tsql,collation,Sql Server,Tsql,Collation,SQL Server中的存储过程中发生了排序错误 无法解决等于操作中“Latin1_General_CS_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突 数据库的排序规则是Latin1\u General\u CS\u AS 错误发生在INSERT INTO行上。我应该在哪里添加对比声明 CREATE TABLE #TempList ( TNR varchar(10) ) DECLARE @TNR varchar(10), @Pos int S

SQL Server中的存储过程中发生了排序错误

无法解决等于操作中“Latin1_General_CS_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突

数据库的排序规则是Latin1\u General\u CS\u AS

错误发生在INSERT INTO行上。我应该在哪里添加对比声明

CREATE TABLE #TempList
(
    TNR varchar(10)
)

DECLARE @TNR varchar(10), @Pos int

SET @subjectList = LTRIM(RTRIM(@subjectList))+ ','
SET @Pos = CHARINDEX(',', @subjectList, 1)

IF REPLACE(@subjectList, ',', '') <> ''
BEGIN
    WHILE @Pos > 0
    BEGIN
        SET @TNR = LTRIM(RTRIM(LEFT(@subjectList, @Pos - 1)))
        IF @TNR <> ''
        BEGIN
            INSERT INTO #TempList (TNR) VALUES (CAST(@TNR AS varchar(10))) --this is where it errors
        END
        SET @subjectList = RIGHT(@subjectList, LEN(@subjectList) - @Pos)
        SET @Pos = CHARINDEX(',', @subjectList, 1)

    END
END 
CREATE TABLE#templast
(
TNR varchar(10)
)
声明@TNR varchar(10),@Pos int
设置@subjectList=LTRIM(RTRIM(@subjectList))+','
设置@Pos=CHARINDEX(“,”,@subjectList,1)
如果替换(@subjectList,“,”,“,”)”
开始
而@Pos>0
开始
设置@TNR=LTRIM(RTRIM(左(@subjectList,@Pos-1)))
如果@TNR“
开始
插入到#templast(TNR)值(CAST(@TNR AS varchar(10))——这就是它出错的地方
结束
设置@subjectList=RIGHT(@subjectList,LEN(@subjectList)-@Pos)
设置@Pos=CHARINDEX(“,”,@subjectList,1)
结束
结束

临时表使用tempdb服务器排序规则,即服务器排序规则

通过使用
collatedatabase\u Default
将其更改为使用“主机”数据库排序规则,并使排序规则强制独立于实际的数据库排序规则

CREATE TABLE #TempList
(
    TNR varchar(10) COLLATE Database_Default
)
...

不适用于@TNR(即使是字符串数据类型),因为这显然与数据库(不是服务器)具有相同的排序规则,因此出现错误…

不客气。请随意投票并接受。。。(向上箭头和勾号)不使用临时表时如何设置排序规则?@Sharique:在什么上下文中,用于什么等?