SQLite)在JOIN中使用正则表达式加入

时间:2015-01-02 14:46:06

标签: sql regex sqlite join

我有两个表都有一个名为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)

但是错过了bobBob的匹配。

此外,如何总是选择名称的大写版本。

1 个答案:

答案 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);

不可否认,这个较小的案例是整个名字,但在这种情况下这似乎是合理的。