db2 like +% 匹配不能自动忽略char型尾部的空格
$ db2 describe table lc.t1
Column Type Typename schema name Length Scale Nulls------------------------------ --------- ------------------ -------- ----- ------C1 SYSIBM CHARACTER 8 0 Yes C2 SYSIBM VARCHAR 4 0 Yes
2 record(s) selected.
--对于char类型的字段值,如果长度小于定义的字段长度,则db2会自动在其后补足空格--即如下第一条记录中,c1字段实际存储的为 ‘22355 ' (尾部是三个空格)$ db2 "select * from lc.t1"
C1 C2 -------- ----22355 232 33336777 3345
2 record(s) selected. $ db2 "select length(c1) ,c1 from lc.t1"
1 C1 ----------- -------- 8 22355 8 33336777
2 record(s) selected. --使用"="操作符时,系统会自动忽略尾部空格$ db2 "select * from lc.t1 where c1 ='22355'"
C1 C2 -------- ----22355 232
1 record(s) selected. --使用like %方式 系统不会忽略尾部空格,所以找不到纪录 $ db2 "select * from lc.t1 where c1 like '%355'"
C1 C2 -------- ----
0 record(s) selected.
--匹配时在尾部再增加一个%通配符,则可以找到记录$ db2 "select * from lc.t1 where c1 like '%355%'"
1 record(s) selected.
-- 如果条件中补足所缺的三个空格,也可以查询到预期的结果$ db2 "select * from lc.t1 where c1 like '%355 '"
1 record(s) selected. --如果字段内容已经够8位,则末尾没有系统添加的空格,则可以查到预期的内 容 $ db2 "select * from lc.t1 where c1 like '%777'"
C1 C2 -------- ----33336777 3345
--对于varchar字段类型,由于存储的就是实际值,尾部没有补充空格,所以可以检索到预期结果$ db2 "select length (c2),c2 from lc.t1"
1 C2 ----------- ---- 3 232 4 3345
2 record(s) selected. $ db2 "select * from lc.t1 where c2 like '%32'"
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
关于TWT使用指南社区专家合作厂商入驻社区企业招聘投诉建议版权与免责声明联系我们 © 2024talkwithtrend — talk with trend,talk with technologist京ICP备09031017号-30
添加新评论0 条评论