比较具有不同格式但含义相同的两个字符串

时间:2013-09-04 12:07:59

标签: sql

我有没有办法比较两个字符串12 AD E4 9F12:ad:E4:9f,并得到一个结果,表明它们相似。存储在不同的表中,我想通过使用字符串作为连接标准来连接表来创建视图

4 个答案:

答案 0 :(得分:1)

您可以将第二个字符串转换为大写字母,然后在比较字符串之前删除所有''和':'

从双重选择UPPER(REPLACE('12:ad:E4:9f',':','');

答案 1 :(得分:0)

一种方法是在进行比较之前消除字符:

where replace(col1, ' ', '') = replace(col2, ':', '')

或者将一个分隔符替换为另一个分隔符:

where replace(col1, ' ', ':') = col2

通常,SQL在字符串比较中不区分大小写,除非您明确将其设置为区分大小写。如果您具有区分大小写,请将上述内容包含在lower()upper()中。函数replace()upper()lower()在大多数数据库中都可用(尽管有些名称可能略有不同)。

答案 2 :(得分:0)

尝试这种方式用于tsql。 您应该使用replaceupper功能。在下面的例子中,col2是12:ad:E4:9f

select *
from tab1 t1
join tab2 t2 on upper(t1.col1) = upper(REPLACE((t2.col2,':',''))

答案 3 :(得分:0)

REPLACE(LTRIM(RTRIM(ProductDescription)), ':', '')
SELECT UPPER(ProductDescription)
然后比较..