sqlserverselectif
Ⅰ sql語句查出的數據為空,怎麼用個if語句判斷,然後作出處理
可以實現,以sql server為例看:
if not exists(select userName from food join diningcar on food.foodId=diningcar.foodId join users on diningcar.userId=users.userId where (comment=0 or comment=-1) and userName='zq' group by userName)
select 0,'zq'
else
select sum(price),userName from food join diningcar on food.foodId=diningcar.foodId join users on diningcar.userId=users.userId where (comment=0 or comment=-1) and userName='zq' group by userName
方法二:
select isnull(sum(price),0),userName
from food join diningcar on food.foodId=diningcar.foodId
join users on diningcar.userId=users.userId
where (comment=0 or comment=-1) and userName='zq'
group by userName
不知道是不是你想要的結果,但是我有個疑問,你為什麼不在程序里進行判斷,而是要讓sql語句判斷呢?
Ⅱ SQL server if else怎麼使用
if (select count(*) from A1 where dic like '%auth_info%')>0
或者
if exists(select * from A1 where dic like '%auth_info%')
Ⅲ sql 查詢時有空值返回0怎麼寫
根據資料庫的不同,採用如下不同的方法:
oracle
將空值返回0用如下語句:
select nvl(欄位名,0) from 表名;sqlserver
將空值返回0用如下語句:
方法一:select isnull(欄位名,0) from 表名;
字元型:select isnull(mycol,'0') as newid from mytable
整型:select isnull(mycol,0) as newid from mytable
方法二:case ……end
case when columnName is null then 0 else columnName endmysql
將空值返回0用如下語句:
select ifnull(欄位名,0) from 表名;
拓展資料:
SQL SELECT 語句
SELECT 語句用於從表中選取數據。
結果被存儲在一個結果表中(稱為結果集)。
SQL SELECT 語法
SELECT 列名稱 FROM 表名稱。
Ⅳ Sql Server 可以支持在sql中寫if或switch嗎
當然可以,語法如下:
select
isnull(col1,'')asnewcol1,
case
whencol1=10then'A'
whencol1=11then'B'
else
'C'
endasnewcol2
from
table_name
Ⅳ 求教,sql的if如何使用
SQLServerIF用法:
IF條件表達式
BEGIN
SQL語句
END
ELSE
BEGIN
SQL語句
END
設置一個變數@sex,如果@sex為』F』,
那麼查詢Employees中所有TitleOfCourtesy為』Ms.』或
』Mrs.』的所有記錄;如不是,查詢剩下的紀錄。
declare@sexchar(1)
set@sex='M'
if@sex='F'
begin
select*fromEmployees
whereTitleOfCourtesy='Ms.'
orTitleOfCourtesy='Mrs.'
end
else
begin
select*fromEmployees
whereTitleOfCourtesy<>'Ms.'
andTitleOfCourtesy<>'Mrs.'
end
Ⅵ 在sql server2012中,if語句怎樣顯示select的結果我的只有返回值。在線等。代碼如下
--用這個 我測試過了
CREATE Procere stu_age
@sno char(3)
,@return nvarchar(2)=null
AS BEGIN
--& ISNUMERIC(@sno) 如果你這地方是判斷是否是數字 就這樣寫 & ISNUMERIC(@sno)=1
--你這樣寫是沒有意義的
IF LEN(@sno)=3
BEGIN
SELECT @return=DATEDIFF(YEAR,sbirthday,GETDATE())
FROM student
WHERE sno=@sno
print @return
END
ELSE
BEGIN
print ('返回失敗');
END
END
Ⅶ 求助,如何在SELECT語句中加上IF判斷
例:
select *,if(sva=1,"男","女") as ssva from tableame where id =1
Quote
控制流程函數
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
在第一個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為ELSE後的結果,如果沒有ELSE 部分,則返回值為 NULL。
sql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
sql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
sql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
一個CASE表達式的默認返回值類型是任何返回值的相容集合類型,但具體情況視其所在語境而定。如果用在字元串語境中,則返回結果味字元串。如果用在數字語境中,則返回結果為十進制值、實值或整數值。
IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回值為expr2; 否則返回值則為 expr3。IF() 的返回值為數字值或字元串值,具體情況視其所在語境而定。
sql> SELECT IF(1>2,2,3);
-> 3
sql> SELECT IF(1<2,'yes ','no');
-> 'yes'
sql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
如果expr2 或expr3中只有一個明確是 NULL,則IF() 函數的結果類型 為非NULL表達式的結果類型。
expr1 作為一個整數值進行計算,就是說,假如你正在驗證浮點值或字元串值, 那麼應該使用比較運算進行檢驗。
sql> SELECT IF(0.1,1,0);
-> 0
sql> SELECT IF(0.1<>0,1,0);
-> 1
在所示的第一個例子中,IF(0.1)的返回值為0,原因是 0.1 被轉化為整數值,從而引起一個對 IF(0)的檢驗。這或許不是你想要的情況。在第二個例子中,比較檢驗了原始浮點值,目的是為了了解是否其為非零值。比較結果使用整數。
IF() (這一點在其被儲存到臨時表時很重要 ) 的默認返回值類型按照以下方式計算:
表達式
返回值
expr2 或expr3 返回值為一個字元串。
字元串
expr2 或expr3 返回值為一個浮點值。
浮點
expr2 或 expr3 返回值為一個整數。
整數假如expr2 和expr3 都是字元串,且其中任何一個字元串區分大小寫,則返回結果是區分大小寫。
http://blog.knowsky.com/
IFNULL(expr1,expr2)
假如expr1 不為 NULL,則 IFNULL() 的返回值為 expr1; 否則其返回值為 expr2。IFNULL()的返回值是數字或是字元串,具體情況取決於其所使用的語境。
sql> SELECT IFNULL(1,0);
-> 1
sql> SELECT IFNULL(NULL,10);
-> 10
sql> SELECT IFNULL(1/0,10);
-> 10
sql> SELECT IFNULL(1/0,'yes');
-> 'yes'
IFNULL(expr1,expr2)的默認結果值為兩個表達式中更加「通用」的一個,順序為STRING、 REAL或 INTEGER。假設一個基於表達式的表的情況, 或MySQL必須在內存儲器中儲存一個臨時表中IFNULL()的返回值:
CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;
在這個例子中,測試列的類型為 CHAR(4)。
NULLIF(expr1,expr2)
如果expr1 = expr2 成立,那麼返回值為NULL,否則返回值為 expr1。這和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。
sql> SELECT NULLIF(1,1);
-> NULL
sql> SELECT NULLIF(1,2);
-> 1
注意,如果參數不相等,則 SQL 兩次求得的值為 expr1
Ⅷ sql server if 語句
好像沒想有比case更好的用法了,為什麼要使用if來判斷呢?
其實建議lz避免使用這類MS方言sql,執行條件判斷遠比集合操作要慢。而且可能會出現移植方面的問題,每多用一個case判斷都可能對將來的維護造成一定的影響。
推薦。
建立一個參照表 DepartInfo,將對應中文解釋等相關信息放入表中與Employees表連接查詢。
Ⅸ 如何在sqlserver中 的if else
跟程序中使用差不多,if,else if,else,只不過在sqlserver中,{}使用begin和end代替,裡面嵌套什麼的,都跟程序中寫的差不多,簡單實例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
declare @a int
set @a=1
if @a<0
begin
select '小於0'
end
else if @a=0
begin
select '等於0'
end
else
begin
if @a>0 and @a<1
begin
select '大於0小於1'
end
else
begin
select '大於1'
end
end
在簡單看看程序代碼:
int a=1;
if(a<0)
{
輸出小於0;
}
else if(a==0)
{
輸出等於0;
}
else
{
if(a>0&&a<1)
{
輸出大於0小於1;
}
else
{
輸出大於1
}
}
Ⅹ SQL中如何使用IF語句
SQL中的if語句與偽代碼的寫法很相似,即:
IF (條件) then
執行語句體
END IF;
舉例:
begin
if 1 > 0 then
dbms_output.put_line('1>0');
end if;
end;