我有table
列code
和document
。列code
可能包含字母数字值(仅字母)和/或数字值(仅限数字)。在模型中,每个数字code
都有一个字母数字等效code
。以下记录代表了这种情况的一个示例(格式为document
,code
);(document
,code
):
(12345678900,ABC);(12345678900,999)
但是,字母数字code
可能并不总是具有等效数字code
,因此下面的示例代表我们有3个不同记录的情况
(12345678900,ABC);(12345678900,999);(00987654321,XYZ);(11111111111,DEF)
考虑到这一点,我想要做的是以下内容:我将用于搜索记录的内容始终是字母数字code
,当我有一个等效的数字时,我想要数字一个,但是当alpha没有数字等价物时,我想要字母数字code
。
例如,如果我执行以下选择,我会得到以下结果:
SELECT code FROM table WHERE code = 'ABC'
- >结果:999 SELECT code FROM table WHERE code = 'DEF'
- >结果:DEF SELECT code FROM table WHERE code = 'XXX'
- >结果:(空白)如果有人能帮助我,我感激不尽。
此致
AMR
答案 0 :(得分:0)
试试这个
SELECT
f1.doc
, COALESCE(f2.code, f1.code) code
FROM foo f1
LEFT JOIN(
SELECT doc, code
FROM foo
WHERE code <> @code
) f2 ON f2.doc = f1.doc
WHERE f1.code = @code