Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LIKE operator in SQL Server not working as expected

I have the following SQL query:

select
    zz.teststring TEST_STRING
    ,case when zz.teststring like 'JA%' then 'true' else 'false' end [JA%]
    ,case when zz.teststring like 'J%' then 'true' else 'false' end [J%]
    ,case when zz.teststring like 'JAA%' then 'true' else 'false' end [JAA%]
from 
    (select 'jaa' teststring) zz

which outputs

TEST_STRING      JA%       J%       JAA%
jaa              false     true     true

Upper/lower case makes no difference.

I'd really appreciate it if anyone could explain why the JA% returns false?

like image 548
Nilzone- Avatar asked Dec 03 '25 02:12

Nilzone-


1 Answers

You need to check collation probably is set to Case Sensitive:

Demo

select
zz.teststring TEST_STRING
,case when zz.teststring like 'JA%' then 'true' else 'false' end [JA%]
,case when zz.teststring like 'J%' then 'true' else 'false' end [J%]
,case when zz.teststring like 'JAA%' then 'true' else 'false' end [JAA%]
from (
    select 'jaa' teststring
) zz

For Case Insensitive add COLLATE Latin1_General_CI_AS

select
zz.teststring TEST_STRING
,case when zz.teststring like 'JA%'  COLLATE Latin1_General_CI_AS then 'true' else 'false' end [JA%]
,case when zz.teststring like 'J%' COLLATE Latin1_General_CI_AS then 'true' else 'false' end [J%]
,case when zz.teststring like 'JAA%' COLLATE Latin1_General_CI_AS then 'true' else 'false' end [JAA%]
from (
    select 'jaa' teststring
) zz

EDIT:

But I wonder how you get your answer false, true, true?:

Demo2

select
zz.teststring TEST_STRING
,case when zz.teststring like 'JA%' then 'true' else 'false' end [JA%]
,case when zz.teststring like 'J%' then 'true' else 'false' end [J%]
,case when zz.teststring like 'JAA%' then 'true' else 'false' end [JAA%]
from (
    select 'jaa' COLLATE Latin1_General_CS_AS teststring
) zz

Thanks jarlh mystery is solved:

COLLATE Danish_Norwegian_CI_AI

Demo3

With some languages 'aa' is treated as one character.

like image 187
Lukasz Szozda Avatar answered Dec 05 '25 17:12

Lukasz Szozda



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!