在Postgresql 8中为什么这没关系
select * from prod where code like '1%'
select * from prod where code like '%1'
但是这会返回0行(代码以数字1开头/结尾)
select * from prod where code like '1%1'
更新
这发生在我目前的安装中:
# psql --version
psql (PostgreSQL) 8.3.7
create table a(code char(10));
CREATE TABLE
db=# insert into a values('111');
INSERT 0 1
db=# select * from a where code like '1%';
code
------------
111
(1 row)
db=# select * from a where code like '%1';
code
------
(0 rows)
db=# select * from a where code like '1%1';
code
------
(0 rows)
更新2
这是数据类型!使用varchar就可以了!
谢谢。
答案 0 :(得分:7)
是因为数据类型是char(10)吗?
这意味着即使你只是插入一些像“111”这样的东西,它总会占用10个字符。因此,如果最后不使用带有“1”的10个字符的字符串,则“%1”和“1%1”将永远不会匹配。
答案 1 :(得分:1)
(编辑:我发布了以下内容(使用AND运算符,而不是OR)。
SELECT * FROM prod WHERE code LIKE '%1' OR code LIKE '1%';
如果你想要AND运算符,问题中的查询应该可以正常工作。但是,如果你想使用OR运算符,那么上面的查询可能是更好的方法之一。