Oll*_*lli 2 sql-server ssis unicode
我遇到了一个错误:“SSIS 无法在 unicode 和非 unicode 字符串数据类型之间转换”,即使源列和目标列都是 unicode (NVARCHAR) 数据类型。源数据库和目标数据库在同一台服务器上。
来源是一个查询:
SELECT
CASE
WHEN [Gender__c] = 'Female' THEN 'N'
WHEN [Gender__c] = 'Male' THEN 'M'
WHEN [Gender__c] = 'Nainen' THEN 'N'
WHEN [Gender__c] = 'Mies' THEN 'M'
When [Gender__c] = 'Ei tiedossa' THEN 'Ei tiedossa'
ELSE NULL
END as Gender__c
FROM [database].[table]
Run Code Online (Sandbox Code Playgroud)
有人见过一样的吗?
您说输入列在高级编辑器中显示为非 Unicode,即使源数据列是 Unicode。
根据您的查询,我认为源数据列不是 Unicode - 因为源数据列不是您认为的那样。
Gender__C可能是一NVARCHAR列 - 但它不是您的源列。您的源列基于您的 CASE 语句返回的值 - 这些都是CHAR/VARCHAR值。
要使 CASE 语句返回的值NCHAR/ NVARCHAR,告诉 SQL 您的文本文字将被视为 Unicode 值,方法是N在开始的单引号之前放置一个:
SELECT
CASE
WHEN [Gender__c] = N'Female' THEN N'N'
WHEN [Gender__c] = N'Male' THEN N'M'
WHEN [Gender__c] = N'Nainen' THEN N'N'
WHEN [Gender__c] = N'Mies' THEN N'M'
When [Gender__c] = N'Ei tiedossa' THEN N'Ei tiedossa'
ELSE NULL
END as Gender__c
FROM [database].[table]
Run Code Online (Sandbox Code Playgroud)
[因为Gender__c是NVARCHAR,所以我也做了你的比较值NVARCHAR]。
试试这个,SSIS 应该会识别Gender__c出结果集中是一个DT_WSTR.