[英]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.