gpt4 book ai didi

SQL _ 通配符未按预期工作。为什么?

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

所以我有这个问题

select id, col1, len(col1)
from tableA

从那里我想获取 col1 中正好有 5 个字符并以 15 开头的所有数据

select id, col1, len(col1)
from tableA
where col1 like '15___' -- underscore 3 times

现在 col1 是一个 nvarchar(192) 并且有以 15 开头的数据 的长度为 5。但是第二个查询总是显示没有行。

这是为什么?

最佳答案

情况可能是该字段是一个大的空字符串?如“15123”

您还可以尝试其他解决方案吗?

select id, col1, len(col1)
from tableA
where col1 like '15%' AND Len(col1)=5

编辑 - 供将来引用:

为了全面起见,char 和 nchar 使用完整的字段大小,因此 char(10) 的长度为 15________(“15”+ 8 个字符),因为它隐式地强制了大小,而varchar 根据提供的内容调整大小 15 就是 15

要解决这个问题,您可以

A) 执行 LTRIM/RTRIM 以切断所有多余的空格

select id, col1, len(col1)
from tableA
where rtrim(ltrim(col1)) like '15___'

B) 执行 LEFT() 只抓取左边的 5 个字符

select id, col1, len(col1)
from tableA
where left(col1,5) like '15___'

C) 转换为 varchar,一种相当草率的方法

select id, col1, len(col1)
from tableA
where CAST(col1 AS Varchar(192)) like '15___'

关于SQL _ 通配符未按预期工作。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745931/

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