请帮我解决以下问题,我想检查字符串是否以' G'或者' F'在条件和现有条件的情况下。这是查询
第一个查询: -
SELECT Top 1 LC_ID, ISNULL(LC_UD, 0) as Record
FROM CONTRACT
WHERE LC_ID = 'F01'
输出
F01 | 1 ( if available) else no record will be return.
第二个查询:
IF LC_ID starts with 'F%' or 'G%'
如何将查询整合到一个查询中,以便在没有可用于' F01'值,它将检查LC_ID是否以F& G然后返回 输出
F04 | 1
否则不会返回任何记录。
答案 0 :(得分:2)
您希望确定要返回的值的优先级。因为您只想要一个,所以可以使用ORDER BY
:
SELECT Top 1 LC_ID, COALESCE(LC_UD, 0) as Record
FROM CONTRACT
WHERE LC_ID LIKE '[FG]%'
ORDER BY (CASE WHEN LC_ID = 'F01' THEN 1 ELSE 2 END);
注意:这假设您使用的是SQL Server(基于语法)。
答案 1 :(得分:0)
@ gordon的答案很聪明,虽然可能是特定于Sql Server的。这是一种不同的方法。 "前1"功能也是sql server,但可以通过其他技术来避免。
SELECT Top 1 LC_ID, ISNULL(LC_UD, 0) as Record
FROM CONTRACT
WHERE LC_ID = 'F01'
UNION
SELECT Top 1 LC_ID, ISNULL(LC_UD,0) As Record
FROM CONTRACT
WHERE NOT EXISTS (SELECT * FROM CONTRACT WHERE LC_ID = 'F01')
AND LC_ID LIKE '[FG]%'