在AS400中怎样用SQL判断字符串中是否含汉字

发布于 2022-08-25 05:51:59 字数 144 浏览 19 评论 9

刚才给了一道思考题,看来坛子里高手不少,很快就有人揭榜了。现在再出一题看看要多久朋友们能给出答案。
这道题目用高级语言实在是太容易了。问题是现在得用SQL.

[ 本帖最后由 franliu 于 2009-11-21 16:37 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

浅忆 2022-09-01 23:55:04

SELECT   *  
      FROM pf1
        WHERE        hex(my_field)   like    '%0E%'

这样不可以吗??????

_蜘蛛 2022-09-01 23:54:44

再看看这个如何?
SELECT * FROM 表 WHERE
POSSTR(字段, X'0E')>0 AND  
POSSTR(字段, X'0F')-POSSTR(字段, X'0E')>=3

悲喜皆因你 2022-09-01 23:17:30

原帖由 franliu 于 2009-11-22 10:40 发表
还没有人揭晓?那我就抛砖引玉啦。我的办法是:

select your_field from your_file where                           
length(trim(graphic(your_field)))  length(trim(your_field))

...

看了一下,length 函数 对 graphic 函数的结果处理原来如此。谢谢!

二楼的方法漏网之鱼太多了。
原因是如果如果单字节字符的右半字节是 0, 而其右边单字节字符的左半字节是 E 或者 F 的话,这些纯英文的纪录也会被选出来了。
...

这是正解。谢谢!

魂归处 2022-09-01 23:17:15

原帖由 llfgod 于 2009-11-21 23:35 发表
这个方法不对哦,如果字串里面是0e0f的话,那你也找出来了咯,其实他没有汉字的:)或者我写0e120f,你是不是也找出来了?(不过你的方法如果对那些标准管理的数据库ok,哈哈)

不是字串,而是其16进制值
是有些问题

[ 本帖最后由 ux400 于 2009-11-22 17:15 编辑 ]

放手` 2022-09-01 20:57:05

原帖由 franliu 于 2009-11-22 00:58 发表
二楼的办法好像行不通哦,你上机试试看?

我上机试了才贴出来的
不过对于 '0S01' (数字0) 也会被认为有汉字

[ 本帖最后由 ux400 于 2009-11-22 17:24 编辑 ]

找回味觉 2022-09-01 19:50:13

还没有人揭晓?那我就抛砖引玉啦。我的办法是:

select your_field from your_file where                           
length(trim(graphic(your_field))) <> length(trim(your_field))

大家看看还没有更加简洁的办法。

二楼的方法漏网之鱼太多了。
原因是如果如果单字节字符的右半字节是 0, 而其右边单字节字符的左半字节是 E 或者 F 的话,这些纯英文的纪录也会被选出来了。

违心° 2022-08-30 05:17:37

二楼的办法好像行不通哦,你上机试试看?

心碎无痕… 2022-08-30 04:51:53

这个方法不对哦,如果字串里面是0e0f的话,那你也找出来了咯,其实他没有汉字的:)或者我写0e120f,你是不是也找出来了?(不过你的方法如果对那些标准管理的数据库ok,哈哈)

[ 本帖最后由 llfgod 于 2009-11-21 23:40 编辑 ]

初熏 2022-08-29 07:02:08

SELECT * FROM 表 WHERE HEX(字段) like '%0E%0F%'
还有没有更好的?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文