SQL-Server is ignoring my COLLATION when I'm using LIKE operator

前端 未结 2 1154
慢半拍i
慢半拍i 2021-01-14 01:17

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:

SE         


        
相关标签:
2条回答
  • 2021-01-14 01:59

    You can use COLLATE, eg.

    SELECT * 
    FROM TableName
    WHERE strData COLLATE Latin1_general_CI_AI = 'perez' COLLATE Latin1_general_CI_AI
    

    both sides must have the same collation.

    • SQLFiddle Demo
    • SQLFiddle Demo (using LIKE)

    Others:

    • Selecting a SQL Server Collation
    0 讨论(0)
  • 2021-01-14 02:23

    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.

    0 讨论(0)
提交回复
热议问题