DB2中判断一个字段含有中文字符串的条件如何写
DB2中判断一个字段含有中文字符串的条件怎么写?
如题,请赐教!谢谢!
------解决方案--------------------
写个函数,一个一个字符去循环判断
------解决方案--------------------
我用的版本的db2是没有的
就是去循环字符串,然后判断是不是中文
------解决方案--------------------
不太确认你的具体使用场景,
能把oracle的函数说出来吗?
我可以帮你查查DB2里面有无对应
------解决方案--------------------
这个问题你可以利用DB2中的REPLACE函数来做,把你对象中文字符串替换为空,然后查看前后的字符长度差距,如果是0则没有,不是0则包含有。
------解决方案--------------------
字符不定是什么意思?不需要定啊,只要有前后长度差距不为零,就是有这个字符啊。
------解决方案--------------------
学习了
------解决方案--------------------
这种搞法在Oracle里面也不一定严格对,跟codepage关联,而且在UTF-8环境里韩文日文片假名也跟汉字一样。
DB2里面可以用下面的方法达到类似效果,数据库编码为UTF-8:
db2 => create table t1(c1 varchar(20))
DB20000I The SQL command completed successfully.
db2 => insert into t1 values('zgwz'),('中国文字')
DB20000I The SQL command completed successfully.
db2 => select c1 from t1
C1
--------------------
zgwz
中国文字
2 record(s) selected.
db2 => select c1 from t1 where length(c1) <> length(c1, CODEUNITS32)
C1
--------------------
中国文字
1 record(s) selected.
db2 =>
------解决方案--------------------
locate(arg1,arg2)
用这个函数去判断,arg1是否存在于arg2,如果存在返回位置,没有返回0,你只需要判断结果是不是大于等于1就可以了。结贴给分。
------解决方案--------------------
我觉得楼主应该问DB2有没有按照字节计算字符串长度的函数
------解决方案--------------------
顺便帮你搜到了
CHARACTER_LENGTH()
然后跟oracle一样的用法应该就可以了吧
------解决方案--------------------
比较复杂的问题。
------解决方案--------------------
select c1 from t1 where length(c1) <> length(c1, CODEUNITS32);
11楼正解。
如题,请赐教!谢谢!
------解决方案--------------------
写个函数,一个一个字符去循环判断
------解决方案--------------------
我用的版本的db2是没有的
就是去循环字符串,然后判断是不是中文
------解决方案--------------------
不太确认你的具体使用场景,
能把oracle的函数说出来吗?
我可以帮你查查DB2里面有无对应
------解决方案--------------------
这个问题你可以利用DB2中的REPLACE函数来做,把你对象中文字符串替换为空,然后查看前后的字符长度差距,如果是0则没有,不是0则包含有。
------解决方案--------------------
字符不定是什么意思?不需要定啊,只要有前后长度差距不为零,就是有这个字符啊。
------解决方案--------------------
学习了
------解决方案--------------------
这种搞法在Oracle里面也不一定严格对,跟codepage关联,而且在UTF-8环境里韩文日文片假名也跟汉字一样。
DB2里面可以用下面的方法达到类似效果,数据库编码为UTF-8:
db2 => create table t1(c1 varchar(20))
DB20000I The SQL command completed successfully.
db2 => insert into t1 values('zgwz'),('中国文字')
DB20000I The SQL command completed successfully.
db2 => select c1 from t1
C1
--------------------
zgwz
中国文字
2 record(s) selected.
db2 => select c1 from t1 where length(c1) <> length(c1, CODEUNITS32)
C1
--------------------
中国文字
1 record(s) selected.
db2 =>
------解决方案--------------------
locate(arg1,arg2)
用这个函数去判断,arg1是否存在于arg2,如果存在返回位置,没有返回0,你只需要判断结果是不是大于等于1就可以了。结贴给分。
------解决方案--------------------
我觉得楼主应该问DB2有没有按照字节计算字符串长度的函数
------解决方案--------------------
顺便帮你搜到了
CHARACTER_LENGTH()
然后跟oracle一样的用法应该就可以了吧
------解决方案--------------------
比较复杂的问题。
------解决方案--------------------
select c1 from t1 where length(c1) <> length(c1, CODEUNITS32);
11楼正解。