【发布时间】:2014-08-25 16:29:28
【问题描述】:
我有两张表,我必须有条件地离开它们。表的定义是 tbl1 (col1, col2, col3, ..., coln), tbl2 (col1, col2, col3), 两个表中的 col1 定义为 char(2),col2 定义为 char(4)。例如 tbl1:
col1 col2 col3 … coln
01 0010
02 0014
10 1235
29 2566
38 1235
8A 1232
tbl2:(x 表示它是一个字母,可以是 0-9 或 a-z 之间的任何值)
col1 col2 col3
0x NULL
1x NULL
2x NULL
...
9x NULL
13 1234
31 1890
32 1342
3a 1232
...
我需要根据 tbl2 中 col1 和 col2 的值加入这两个表。以下是我的查询
select *
from tbl1 left join tbl2
on case when tbl2.col1 like '[0-9]x' then left(tbl1.col1, 1)=left(tbl2.col1, 1)
else tbl1.col1=tbl2.col1 and tbl1.col2=isnull(tbl2.col2, tbl1.col2) end
我收到一个错误“'=' 附近的语法不正确”。谁能告诉我为什么?此外,我还想考虑 (3a, 13xx, ...) 、 (3a, 123x, ...) 或 (3a, 1xxx, ...) 等情况。有没有人解释一下?
【问题讨论】:
标签: sql-server join