kar*_*tal 26 sql sql-server collation sql-server-2008
我试图在SQL 2008数据库中存储阿拉伯字符串,但它转换为"问号"为什么?我该怎么办?
Mar*_*ith 54
您需要为varchar/char列选择阿拉伯语排序规则或使用Unicode(nchar/nvarchar)
CREATE TABLE #test
(
col1 VARCHAR(100) COLLATE Latin1_General_100_CI_AI,
col2 VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS,
col3 NVARCHAR(100)
)
INSERT INTO #test VALUES(N'?? ????? ???????',N'?? ????? ???????',N'?? ????? ???????')
Run Code Online (Sandbox Code Playgroud)
返回
SELECT * FROM #test
Run Code Online (Sandbox Code Playgroud)
要查看阿拉伯语排序规则列表,请使用
col1 col2 col3
------------------------------ ------------------------------ ------------------------------
?? ????? ??????? ?? ????? ??????? ?? ????? ???????
Run Code Online (Sandbox Code Playgroud)
您可以在数据库级别更改排序规则,而不是更改数据库中的每一列:
USE master;
GO
ALTER DATABASE TestDB
COLLATE Arabic_CI_AI;
GO
Run Code Online (Sandbox Code Playgroud)
小智 5
在每个值之前添加“N”。\n示例:
\n\nINSERT INTO table1 VALUES(N'aaaaaaaaa',N'\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9\xd7\xa9',N'aaaaaaaaaaa',N'\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4\xd8\xb4')\n
Run Code Online (Sandbox Code Playgroud)\n