通过上面的问题和结果,我想出了一些我们应该注意使用字符串和比较的点:
-----> 可以将数值与任何比较函数进行比较,即;
=, !=, <, >, <=, >=, IS NULL, LIKE, BETWEEN, IN
但要小心使用引号;
SELECT (CASE WHEN '9' > '12' THEN 'Y' ELSE 'N' END) FROM dual;-- results Y
因为,这里的隐式位置比较是通过检查9>1(12 中的 1)来完成的,所以条件 9>1 为真,所以结果为 Y。
与数字进行比较的正确方法是不带引号:
SELECT (CASE WHEN 9 > 12 THEN 'Y' ELSE 'N' END) FROM dual;--results N
----->用'>'和'<'将一个字符串与另一个字符串进行比较是没有意义的
-----> 我们UTL_MATCH
专门为字符串匹配打包。
SELECT utl_match.edit_distance( 'abc','abcde' ) FROM dual;--results 2, shows no:of edits required to make string1 to string2.
SELECT UTL_MATCH.EDIT_DISTANCE_similarity('abc', 'abcde') FROM DUAL;-- results 60, shows the similarity percentage of two strings.