在AS400中怎样用SQL判断字符串中是否含汉字
刚才给了一道思考题,看来坛子里高手不少,很快就有人揭榜了。现在再出一题看看要多久朋友们能给出答案。
这道题目用高级语言实在是太容易了。问题是现在得用SQL.
[ 本帖最后由 franliu 于 2009-11-21 16:37 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
SELECT *
FROM pf1
WHERE hex(my_field) like '%0E%'
这样不可以吗??????
再看看这个如何?
SELECT * FROM 表 WHERE
POSSTR(字段, X'0E')>0 AND
POSSTR(字段, X'0F')-POSSTR(字段, X'0E')>=3
看了一下,length 函数 对 graphic 函数的结果处理原来如此。谢谢!
这是正解。谢谢!
不是字串,而是其16进制值
是有些问题
[ 本帖最后由 ux400 于 2009-11-22 17:15 编辑 ]
我上机试了才贴出来的
不过对于 '0S01' (数字0) 也会被认为有汉字
[ 本帖最后由 ux400 于 2009-11-22 17:24 编辑 ]
还没有人揭晓?那我就抛砖引玉啦。我的办法是:
select your_field from your_file where
length(trim(graphic(your_field))) <> length(trim(your_field))
大家看看还没有更加简洁的办法。
二楼的方法漏网之鱼太多了。
原因是如果如果单字节字符的右半字节是 0, 而其右边单字节字符的左半字节是 E 或者 F 的话,这些纯英文的纪录也会被选出来了。
二楼的办法好像行不通哦,你上机试试看?
这个方法不对哦,如果字串里面是0e0f的话,那你也找出来了咯,其实他没有汉字的:)或者我写0e120f,你是不是也找出来了?(不过你的方法如果对那些标准管理的数据库ok,哈哈)
[ 本帖最后由 llfgod 于 2009-11-21 23:40 编辑 ]
SELECT * FROM 表 WHERE HEX(字段) like '%0E%0F%'
还有没有更好的?