oracle数据库全角半角问题

select*fromtableNamewhereTO_SINGLE_BYTE(title)=TO_SINGLE_BYTE('&&')我想实现不区分全角和半角字符的查询,... select * from tableName where TO_SINGLE_BYTE(title) = TO_SINGLE_BYTE('&&')
我想实现不区分全角和半角字符的查询,如果数据库中存的是全角字符,用上面这样的办法行不通,要怎么样写才行呢?
问题解决了,改成
select * from tableName where TO_SINGLE_BYTE(to_char(title)) = TO_SINGLE_BYTE('&&')
就OK了,原来没有加to_char()这个函数,所以转换半角失败
展开
 我来答
缘云玉
2011-03-12 · TA获得超过1831个赞
知道小有建树答主
回答量:425
采纳率:33%
帮助的人:239万
展开全部
select * from testtree tt where to_single_byte(tt.name) like '%&%'

你写的不够具体,很多的内容没有写,所以,不清楚你想要什么样的结果,如果你想查找表中含有某个字符,但是这个字符在某些记录中是存储的全角,在某些记录中是存储的半角,就用这种方法查询。

select * from testtree tt where length(tt.name)!=lengthb(tt.name)
上面的这个语句是查询所有含有全角字符的记录

希望对你有帮助!
追问
select * from testtree tt where to_single_byte(tt.name) like '%&%'
这个和我写的一样,我问题是:数据库中和 要 like 的这个字符串 中间都会有全角或半角字符,不管输入的是全角或半角字符都要能查询到数据,like的两边都不限制全角半角。
现在like的右边用to_single_byte或to_multi_byte是可以转换的,但是like左边用这个方法是没有转的。
追答
你猪啊,你一直就没有理解like是什么含义, where to_single_byte(tt.name) like '%&%' 
你知道是什么含义吗?是把数据表中这个字段凡是全角的全部转换成半角,半角的不变,然后通过半角的内容进行匹配,能查询到这个字段中所有包含&这个的全角还有半角字符,别总是问,自己动手做一做,光说不做,你这辈子也学不好。
luckfire
推荐于2017-09-01 · 超过39用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:113万
展开全部
TO_SINGLE_BYTE
语法: TO_SINGLE_BYTE(String )
功能: 计算String中所有多字节字符都替换为等价的单字节字符.该函数只有当数据库字符集同时包含多字节和单字节的字符的时候有效.否则, String不会进行任何处理.
TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的两个函数.
使用位置: 过程性语言和SQL语句。
select * from tableName where title = TO_MULTI_BYTE('&&')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式