当我使用LIKE运算子时,SQL

编程入门 行业动态 更新时间:2024-10-23 10:21:57
本文介绍了当我使用LIKE运算子时,SQL-Server忽略了我的COLLATION的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用西班牙语数据库,因此当我查找 aeiou和 aeiou时,也可以在where子句中获得áéíóú或 AEIOU或ÁÉÍÓÚ:

I'm working with Spanish database so when I'm looking for and "aeiou" I can also get "áéíóú" or "AEIOU" or "ÁÉÍÓÚ", in a where clause like this:

SELECT * FROM myTable WHERE stringData like '%perez%'

我正在体验:

* perez * PEREZ * Pérez * PÉREZ

所以我将数据库更改为排序规则:Modern_Spanish_CI_AI

So I changed my database to collation: Modern_Spanish_CI_AI

我只能得到:

* perez * PEREZ

但是如果我这样做:

SELECT * FROM myTable WHERE stringData like '%perez%' COLLATE Modern_Spanish_CI_AI

I得到所有结果好,所以我的问题是,为什么如果我的数据库是COLLATE Modern_Spanish_CI_AI,我必须为查询设置相同的排序规则?

I get all results OK, so my question is, why if my database is COLLATE Modern_Spanish_CI_AI I have to set the same collation to my query???

我正在使用SQL -Server 2008

I'm using SQL-Server 2008

推荐答案

您需要更改表COLU的排序规则MN本身。

You need to change the collation of the table COLUMN itself.

select collation_name, * from sys.columns where object_id = object_id('tblname') and name = 'stringdata';

如果幸运的话,它很容易(例如)

If you're lucky it is as easy as (example)

alter table tblname alter column stringdata varchar(20) collate Modern_Spanish_CI_AS

但是如果您有约束和/或架构绑定的引用,它可能会变得很复杂。 处理带有混合排序规则的数据库可能非常困难,因此您可能想要重新整理所有表格列。

But if you have constraints and/or schema bound references, it can get complicated. It can be very difficult to work with a database with mixed collations, so you may want to re-collate all the table columns.

更多推荐

当我使用LIKE运算子时,SQL

本文发布于:2023-10-14 22:24:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1492394.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:子时   当我   SQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!