gpt4 book ai didi

sql-server - 像 '%[9-15]%'(SQL 服务器)

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:07 25 4
gpt4 key购买 nike

我正在使用 SQL Server 2017,我想问一下是否可以使用 LIKE like 运算符,如下所示:

LIKE '%Ticket [8-14]%'

这是正确的还是大于 9 的数字(10,11 等)将被识别为 1 和 0、1 和 1、1 和 2 等。

如果这种方式不起作用,我该怎么做才能选择包含“Ticket 10”、“Ticket11”等字符串的所有数据?

谢谢你的时间

最佳答案

据我所知,没有。但是,您可以执行以下操作:

WITH Demo AS
(
SELECT * FROM (VALUES
('Ticket 1'),
('Ticket 7'),
('Ticket 8'),
('Ticket 10'),
('Ticket 12'),
('Ticket 15')
) T(X)
)
SELECT *
FROM Demo
WHERE X LIKE '%Ticket [8-9]%' OR X LIKE '%Ticket 1[0-4]%'

此外,请考虑规范化 - 如果您需要查询此值,请创建 TicketNumber 列。连接 Ticket 和数字比解析字符串要容易得多。如果需要,TicketNumber 也可以轻松编入索引。

解析数字还有一个更聪明的想法:

WITH Demo AS
(
SELECT * FROM (VALUES
('Ticket 1'),
('Ticket 7'),
('My Ticket 8A'),
('Ticket 10'),
('Some Ticket 12'),
('Ticket 15 other text'),
('Ticket 135 and more')
) T(X)
)
SELECT *, CAST(CASE WHEN PATINDEX('%Ticket [0-9][0-9][0-9]%',X)!=0 THEN SUBSTRING(X, PATINDEX('%Ticket [0-9][0-9][0-9]%',X)+7, 3)
WHEN PATINDEX('%Ticket [0-9][0-9]%',X)!=0 THEN SUBSTRING(X, PATINDEX('%Ticket [0-9][0-9]%',X)+7, 2)
WHEN PATINDEX('%Ticket [0-9]%',X)!=0 THEN SUBSTRING(X, PATINDEX('%Ticket [0-9]%',X)+7, 1)
END AS int) Number
FROM Demo

列号现在应该包含简单的 int 值 - 准备好进行比较和参与计算。

关于sql-server - 像 '%[9-15]%'(SQL 服务器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52222871/

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