我有两个表都有一个名为Name
的列。有时名称以大写字母开头,而有时则不是。我想加入名字上的两个表格,以便bob与Bob的匹配。我假设使用正则表达式可以实现这一点,那么如何构造一个执行此匹配的SQL JOIN查询以及正确的正则表达式呢?
例如:假设我将table1作为:
Name| col1
----------
Bob | a
Jon | b
和表2为:
Name| col2
----------
bob| c
Jon| d
我会按如下方式加入它们(xx是缺少的正则表达式,而yy是正确的选择)
SELECT * , yy as NameWithCapAtFront
FROM table1 as t1
LEFT JOIN table2 as t2
ON xx(t1.Name)=xx(t2.Name)
但是错过了bob
与Bob
的匹配。
此外,如何总是选择名称的大写版本。
答案 0 :(得分:3)
如何使用lower()
功能?
SELECT *, upper(substr(t1.name, 1, 1) || lower(t1.name, 2) as NameWithCapAtFront
FROM table1 as t1 LEFT JOIN
table2 as t2
ON lower(t1.Name) = lower(t2.Name);
不可否认,这个较小的案例是整个名字,但在这种情况下这似乎是合理的。