现在要查询一个字段至少包括两个中文字,高分急求SQL语句,谢谢~~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现在要查询一个字段至少包括两个中文字,高分急求SQL语句,谢谢~~~相关的知识,希望对你有一定的参考价值。

分数后来补充,只要能回答这个问题,我加70分,一共100分。谢谢!!重谢!!

select * from table where patindex('%[吖-座]%',字段) > 0

--[吖-座]是中文字符集第一个到最后一个的范围
这个是判断是否有中文追问

这边咋会报错啊。。PATINDEX invalid identifier 是不是函数名打错了。不会是你写的函数吧。。。

追答

patindex('%[吖-座]%',字段名)>0

SQL中 patindex函数的用法 2011-01-11 15:04:05| 分类: SQL语法 | 标签: |字号大中小 订阅 .

patindex函数的用法
语法格式:PATINDEX ( '%pattern%' , expression )
返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。

pattern字符串在expression表达式里没找就返回0,对所有有效的文本和字符串就是有效的数据类型。

描述一下此函数的具体用法:

貌似没错啊

追问

对了,大哥,我忘了说了,我有的是ORACLE,你用的数据库是?

追答

Oracle里面如何识别存储字段里面是否存在中文,方法有二:

1、使用length和lengthb,如果中文的话length是一个字符,但是lengthb是两个字节。但是这个方法不适合数据库字符集非gbk的情况。
select * from t where length(c1) != lengthb(c1);

2、使用asciistr函数得出是否字段里面包含“/”,因为当中文字符转换为ascii后,变成“/FFFD/FFFD”,但是需要注意一个特殊字符“/”,当它出现的时候转换后的码为“/005C”

SQL> select asciistr('//)(-=!@#$%^&*~中文字符') from dual;

ASCIISTR('//)(-=!@#$%^&*~中文字符')
-----------------------------------------------------------
//005C)(-=!@#$%^&*~/FFFD/FFFD/FFFD/FFFD/FFFD/FFFD/FFFD/FFFD

追问

这个页面我也在网上搜索到了,但是两种方法都不行。因为length != lengthb 不能说明这个字符就是汉字,也可能是全角符,也可能是日文,等等等。还是得按汉字编码来。。。patindex 这个函数ORACLE里确实没有,这是哪个数据库中的函数?SQL SERVER?

追答

sql 的 23.模糊子串的位置 --返回2,参数去掉中间%则返回7
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6

你看看这个行不

追问

这个不行,因为instr不能用这样的形式:[吖-座],只能给定子字符串然后到母字符串中去找,而不是匹配中文。很感谢您的耐心回答,真心的感谢。

追答

.....

参考技术A select * from biao where ziduan like '%汉字1%汉字2%' or ziduan like '%汉字2%汉字1%' ?追问

不是,只要这个字段里面有两个中文字就行,不管是什么中文字(当然不包括全角符)

追答

那就要写函数了,挺麻烦的

追问

悲剧了…… SQL里面能用正则表达式么?正则表达式能否实现这样的功能?(非常感谢您能耐心地回答我的问题,O(∩_∩)O~)

我开始是这样想的:
select length('my name is 我是一只鱼 fish') from dual; --计算得字符数为:21
select lengthb('my name is 我是一只鱼 fish') from dual; --计算得字节数为:26
相差5,正好就是中文字的个数,但是后来发现不行。。。中文的全角符也是两个字节。哎!!

以上是关于现在要查询一个字段至少包括两个中文字,高分急求SQL语句,谢谢~~~的主要内容,如果未能解决你的问题,请参考以下文章

十万火高分急求一个SHELL脚本,下午2点就要要了

急求 MD5的加密解密算法,用C++实现的源代码 高分答谢

sq 语句 查询两个表 并按时间字段排序

h264裸码流怎么在网页中播放, 用flash怎么播放呢???急求,高分

sql 语句 获取最大值

急求一流高手帮忙中译英,绝对真诚高分悬赏1