Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
147 views
in Technique[技术] by (71.8m points)

sql - 如何在SQL SELECT中执行IF…THEN?(How do I perform an IF…THEN in an SQL SELECT?)

How do I perform an IF...THEN in an SQL SELECT statement?

(如何在SQL SELECT语句中执行IF...THEN ?)

For example:

(例如:)

SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product
  ask by Eric Labashosky translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The CASE statement is the closest to IF in SQL and is supported on all versions of SQL Server.

(CASE语句与SQL中的IF最接近,并且在所有版本的SQL Server中都受支持。)

SELECT CAST(
             CASE
                  WHEN Obsolete = 'N' or InStock = 'Y'
                     THEN 1
                  ELSE 0
             END AS bit) as Saleable, *
FROM Product

You only need to do the CAST if you want the result as a Boolean value.

(如果要将结果作为布尔值,则仅需要执行CAST 。)

If you are happy with an int , this works:

(如果您对int感到满意,则可以这样做:)

SELECT CASE
            WHEN Obsolete = 'N' or InStock = 'Y'
               THEN 1
               ELSE 0
       END as Saleable, *
FROM Product

CASE statements can be embedded in other CASE statements and even included in aggregates.

(CASE语句可以嵌入其他CASE语句中,甚至可以包含在聚合中。)

SQL Server Denali (SQL Server 2012) adds the IIF statement which is also available in access (pointed out by Martin Smith ):

(SQL Server Denali(SQL Server 2012)添加了IIF语句,该语句也可以在访问使用 (由Martin Smith指出):)

SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...