我有一张价值表:
--Product--
ASUS22
ASUSI522
ASUSI7256
ASUSI2262
ASUSI1267
ASUSI764
ASUSI712
等等。我正在尝试用ASUSI开始选择产品,之后只有3个整数。
有人说我可以使用\ d \ d \ d来实现这一点,但它不起作用(下图)
select product from products where product like '%ASUS\d\d\d%'
所以我想选择值:
ASUSI712
ASUSI764
ASUSI522
怎么办呢? 谢谢, 的问候,
答案 0 :(得分:1)
要使用字符类,您需要使用SIMILAR TO
代替LIKE
:
select product from products where product similar to '%ASUS\d\d\d'
正如@ lad2025所述,您的原始查询与您的期望不符,因此您需要删除最终%
以将匹配限制为三个数字。
答案 1 :(得分:1)
要匹配字符串ASUSI
的正则表达式,其后面是正好三位数:
^ASUSI\d{3}$
^ASUSI - starts with 'ASUSI'
\d{3} - followed by exactly three digits
$ - followed by the end of the string
SELECT product
FROM products
WHERE product ~ '^ASUSI\d{3}d$'
答案 2 :(得分:0)
可能有更直接的方式,但您可以使用length()
来实现此目的:
SELECT product
FROM products
WHERE product like 'ASUSI%'
AND length(product) = 8
AND product ~ '\d$'
答案 3 :(得分:-1)
这个怎么样?使用LIKE ASUSI并使用3个字符检查范围1到9。
DECLARE @test TABLE(Product VARCHAR(15))
INSERT INTO @test(Product)
VALUES('ASUS22'),
('ASUSI522'),
('ASUSI7256'),
('ASUSI2262'),
('ASUSI1267'),
('ASUSI764'),
('ASUSI712'),
('ASUSI72K'),
('ASUSI7234')
SELECT *
FROM @test
SELECT *
FROM @test
WHERE Product LIKE 'ASUSI[1-9][1-9][1-9]'