我有三列。每列可以为空,具有从01开始的电话号码或从07开始的电话号码。我想确定哪个列具有07号码并且仅在单个列中显示该结果。如果没有以07开头的列我想跳过记录。
我一直在尝试这个,但不能让它选择第3列: -
SELECT ID_no, tel_no1, tel_no2, tel_no3,
coalesce(
CASE WHEN (tel_no1 like '01%' or tel_no1 = null) THEN tel_no2 ELSE NULL END,
CASE WHEN (tel_no2 like '01%' or tel_no2 = null) THEN tel_no3 ELSE NULL END)
from Table where ID_no = 50032
答案 0 :(得分:0)
我认为这是一个基本的case
,有一些where
条件。大多数数据库都支持left()
。否则substr()
/ substring()
适用于where
条件:
select t.*,
(case when tel_no1 like '07%' then tel_no1
when tel_no2 like '07%' then tel_no2
when tel_no3 like '07%' then tel_no3
end) as telno_07
from t
where id_no = 50032 and
'07' in (left(tel_no1, 2), left(telno2, 2), left(telno3, 2));
返回第一个匹配的“07”号码。
或者,更标准的where
条件是:
where . . . and
(tel_no1 like '07%' or tel_no2 like '07%' or tel_no3 like '07%')