簡體   English   中英

如何將變量從一種排序規則轉換為另一種排序規則?

[英]How can I convert a variable from one collation to another?

我有一個在兩個數據庫之間切換的腳本:master&'B'。

數據庫主數據庫具有排序規則“ SQL_Latin1_General_CP1_CI_AS”

數據庫B具有排序規則'Latin1_General_CI_AS'

我已經嘗試過使用COLLATE和CAST命令,但到目前為止都無濟於事。

USE B
DECLARE @ProductsUserName varchar(200)
SET @ProductsUserName = 'SomeValue'

USE master 
DECLARE @UserNameMaster varchar(200) = @ProductsUserName COLLATE SQL_Latin1_General_CP1_CI_AS
DECLARE @GrantViewServerStatement varchar(200) = 'GRANT VIEW SERVER STATE TO ' + @UserNameMaster

查詢將在最后一行炸毀,並顯示錯誤消息:

“無法執行從varchar值到varchar的隱式轉換,因為由於add運算符中的“ Latin1_General_CI_AS”和“ SQL_Latin1_General_CP1_CI_AS”之間的排序規則沖突而導致無法解決該值的排序規則。

顯然,在具有不同排序規則的兩個varchar之間使用'+'運算符存在某種問題。 但是不確定如何將變量“投射”到新的排序規則中!

作為字符串串聯的一部分執行排序規則。 即:

USE B
DECLARE @ProductsUserName varchar(200)
SET @ProductsUserName = 'SomeValue'

USE master 
DECLARE @UserNameMaster varchar(200) = @ProductsUserName
DECLARE @GrantViewServerStatement varchar(200) = 'GRANT VIEW SERVER STATE TO ' + (@UserNameMaster COLLATE SQL_Latin1_General_CP1_CI_AS)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM