检查字符串以特定字母

时间:2016-09-12 19:52:28

标签: sql sql-server

请帮我解决以下问题,我想检查字符串是否以' 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

否则不会返回任何记录。

2 个答案:

答案 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]%'