远程连接SQL Server查询含本地文化字符表名时出现字符集问题
解决SQL Server含特殊文化字符表名的查询问题
显式指定字符串排序规则
直接在查询的匹配字符串后添加对应文化的排序规则,确保字符匹配逻辑正确。比如针对土耳其字符,可使用土耳其语排序规则:SELECT COLUMN_NAME, TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '..ş' COLLATE Turkish_CI_AS若不确定具体排序规则,也可使用数据库默认排序规则做匹配:
SELECT COLUMN_NAME, TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME COLLATE DATABASE_DEFAULT = '..ş'确保连接的字符集一致性
远程连接时,需保证客户端字符集与SQL Server数据库的字符集匹配。比如在连接字符串中添加Unicode=True(ADO.NET场景),或指定Character Set=Windows-1254(土耳其语专用编码),避免字符在传输过程中出现转换丢失。确认表名的实际存储排序规则
部分表的排序规则可能与数据库默认不一致,可先查询表名的实际配置:SELECT name, collation_name FROM sys.tables WHERE name LIKE N'%ş%'根据查询到的
collation_name,在后续查询中使用对应规则进行匹配。使用Unicode字符串前缀
在查询的字符串前添加N前缀,强制以Unicode格式传递字符,避免非Unicode编码导致的字符失真:SELECT COLUMN_NAME, TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'..ş' COLLATE Turkish_CI_AS
内容的提问来源于stack exchange,提问作者SoftWar
相关产品推荐
相关产品推荐

