2013-10-14 38 views
1

有没有一种方法能在左侧使用至少_所以下面的语句返回1:是否可以在LIKE运算符的左侧使用commodin?

SELECT 1 FROM DUAL WHERE 
'te_ephone' like 'tele_ho%' 

我想,因为它解析正确的,让Oracle来解析左侧_匹配'任何'字符。
这是可能或有任何解决方法,使这项工作?

为了给出一些上下文,最终目标是像remoñoson这样的事情与remonos%相匹配。

左边是一列,我用_替换了一些字符,而开始时用相同的替换查询。

+1

我假设你没有使用常数 - 是任何一方从表中来吗? –

+0

左侧是经过一些处理后的列,而右侧是变量。检查编辑并感谢很多! –

+1

我不知道Oracle的详细信息,但在大多数DBMS中,可以使用排序规则定义字符列,其中“ñ”和“n”被认为是相等的。 –

回答

1

根据你的情况下你所期望可以使用Linguistic Sort它可以提供关于搜索语言字符串和排序

例1(不区分大小写或不区分重音比较)的详细信息来实现: -

SELECT word FROM test1 
WHERE NLS_UPPER(word, 'NLS_SORT = XGERMAN') = 'GROSSE'; 

WORD 
------------ 
GROSSE 
Große 
große 
使用正则表达式与基本信算[==]

实施例2: -

的Oracle SQL语法:

SQL> SELECT col FROM test WHERE REGEXP_LIKE(col,'r[[=e=]]sum[[=e=]]'); 

Expression: r[[=e=]]sum[[=e=]] 
Matches: 

简历

简历

恢复

简历

+0

非常感谢,问题在于该列包含所有语言的特殊字符,因此它将具有重音,ß,ñ等等......是否可以对整个词使用“基本字母运算符”? –

+0

不幸的是,你不能使用基本字母操作符来处理整个单词,你能否提供更多关于你的需求的信息? – psaraj12

+0

我想要一列匹配去除所有非ascii字符。我到目前为止所做的是转换为ASCII并用_代替?(非ASCII字符),但如果我想要预期的行为,则需要在列中执行相同的操作。问题是该列存储来自欧洲各地的人的姓氏 –

相关问题