gpt4 book ai didi

sql - SQL Server 中的 LIKE 运算符未按预期工作

转载 作者:行者123 更新时间:2023-12-04 02:17:57 25 4
gpt4 key购买 nike

我有以下 SQL 查询:

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

哪些输出

TEST_STRING      JA%       J%       JAA%
jaa false true true

大写/小写没有区别。

如果有人能解释为什么 JA% 返回 false,我将不胜感激?

最佳答案

您需要检查排序规则是否设置为区分大小写:

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

对于不区分大小写的添加 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

编辑:

但我想知道你是如何得到答案的 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

谢谢jarlh谜底揭晓:

整理 Danish_Norwegian_CI_AI

Demo3

在某些语言中,'aa' 被视为一个字符。

关于sql - SQL Server 中的 LIKE 运算符未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32888939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com