San*_*ago 4 sql-server collation sql-server-2008 sql-like
我正在使用西班牙语数据库所以当我正在寻找和"aeiou"时,我也可以得到"áéíóú"或"AEIOU"或"ÁÉÍÓÚ",在这样的where子句中:
SELECT * FROM myTable WHERE stringData like '%perez%'
Run Code Online (Sandbox Code Playgroud)
我支出:
* perez
* PEREZ
* Pérez
* PÉREZ
Run Code Online (Sandbox Code Playgroud)
所以我将数据库更改为排序规则:Modern_Spanish_CI_AI
我只得到:
* perez
* PEREZ
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
SELECT * FROM myTable WHERE stringData like '%perez%' COLLATE Modern_Spanish_CI_AI
Run Code Online (Sandbox Code Playgroud)
我得到的所有结果都可以,所以我的问题是,为什么我的数据库是COLLATE Modern_Spanish_CI_AI我必须为我的查询设置相同的排序规则???
我正在使用SQL-Server 2008
Joh*_*Woo 10
你可以使用COLLATE
,例如.
SELECT *
FROM TableName
WHERE strData COLLATE Latin1_general_CI_AI = 'perez' COLLATE Latin1_general_CI_AI
Run Code Online (Sandbox Code Playgroud)
双方必须有相同的整理.
其他:
您需要更改表 COLUMN 本身的排序规则。
select collation_name, *
from sys.columns
where object_id = object_id('tblname')
and name = 'stringdata';
Run Code Online (Sandbox Code Playgroud)
如果你幸运的话,就像(示例)一样简单
alter table tblname alter column stringdata varchar(20) collate Modern_Spanish_CI_AS
Run Code Online (Sandbox Code Playgroud)
但如果您有约束和/或架构绑定引用,它可能会变得复杂。
使用具有混合排序规则的数据库可能非常困难,因此您可能需要重新排序所有表列。
归档时间: |
|
查看次数: |
6634 次 |
最近记录: |