我使用一组SQL LIKE条件来浏览字母表并列出以相应字母开头的所有项目,例如,以获得标题以字母"A"开头的所有书籍:
SELECT * FROM books WHERE title ILIKE "A%"
Run Code Online (Sandbox Code Playgroud)
这对于字母来说很好,但是如何列出以任何数字开头的所有项目?值得一提的是Postgres数据库.
Joh*_*iss 132
那将选择(通过正则表达式)每一本标题都以数字开头的书,是你想要的吗?
SELECT * FROM books WHERE title ~ '^[0-9]'
Run Code Online (Sandbox Code Playgroud)
如果你想要以特定数字开头的整数,你可以使用:
SELECT * FROM books WHERE CAST(price AS TEXT) LIKE '123%'
Run Code Online (Sandbox Code Playgroud)
或者使用(如果你的所有数字都有相同的数字位数(那么约束就会有用))
SELECT * FROM books WHERE price BETWEEN 123000 AND 123999;
Run Code Online (Sandbox Code Playgroud)
Vin*_*vic 16
PostgreSQL支持正则表达式匹配.
所以,你的例子看起来像
SELECT * FROM books WHERE title ~ '^\d+ ?'
Run Code Online (Sandbox Code Playgroud)
这将匹配以一个或多个数字和可选空格开头的标题
如果要搜索为字符串,可以像这样转换为文本:
SELECT * FROM books WHERE price::TEXT LIKE '123%'
Run Code Online (Sandbox Code Playgroud)
在 PostgreSQL 9.5 上测试:
-- 仅限数字
select * from books where title ~ '^[0-9]*$';
Run Code Online (Sandbox Code Playgroud)
或者,
select * from books where title SIMILAR TO '[0-9]*';
Run Code Online (Sandbox Code Playgroud)
-- 以数字开头
select * from books where title ~ '^[0-9]+';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125380 次 |
| 最近记录: |