18 09 26 自我研讀(二)

== ISNULL(判斷欄位,要替代的值)

EX:
ISNull(NULL, 'A')   ---A
ISNull(12345, 'A')   ---12345
ISNull(NULL, NULL)   ---NULL

== COALESCE(函數可為多個參數,回傳第一個不是NULL值的參數,至少要有兩個參數)

以下為例










select ID, NAME, p1,p2,p3, coalesce(p2,p3)
from shop_Price
--從p2,p3挑出非NULL值(若都為NULL還是會顯示NULL)








select ID, NAME, p2,p3, coalesce(p2,p3,0)
from shop_Price
--從p2,p3,0挑出非NULL值








== EOMONTH(回傳指定日期當月的最後一天)

select DATEADD(DAY,1,EOMONTH(GETDATE(),-1)) ; 當月第一天
select EOMONTH(getdate()); 當月最後一天

== ISNUMERIC (判斷是否為有效數值,TRUE為1,FALSE為0)
== ISDATE (判斷是否為有效日期,TRUE為1,FALSE為0)

select ISNUMERIC(100),ISNUMERIC(1.5),ISNUMERIC(-10.5),ISNUMERIC('abc');
-- result 1,1,1,0

select ISDATE('2018-09-11'),ISDATE('199033'),ISDATE('abc');
-- result 1,0,0

== TRY_CONVERT(嘗試轉換,若轉換失敗則為NULL)

SELECT isitdate,TRY_CONVERT(datetime,isitdate) as converteddate
FROM Sales.Somedates;






== LIKE 用法 + 萬用字元

1. % : 表任一或多個字元
2._ : 表任一個字元
3. [ ]:表示括弧內所列字元中的一個(類似正則運算式)。指定一個字元、字串或範圍,要求所匹配物件為它們中的任一個。

Select * FROM [user] Where u_name LIKE '[張李王]三'
將找出「張三」、「李三」、「王三」(而不是「張李王三」);
如 [ ] 內有一系列字元(01234、abcde之類的)則可略寫為「0-4」、「a-e」
Select * FROM [user] Where u_name LIKE '老[1-9]'
將找出「老1」、「老2」、......、「老9」;
4,[^ ] :表示不在括弧所列之內的單個字元。其取值和 [] 相同,但它要求所匹配物件為指定字元以外的任一個字元。

Select * FROM [user] Where u_name LIKE '[^張李王]三'
將找出不姓「張」、「李」、「王」的「趙三」、「孫三」等;

Select * FROM [user] Where u_name LIKE '老[^1-4]'
將排除「老1」到「老4」,尋找「老5」、「老6」、......

== CONCAT 用法

SELECT N'伺服器目前的時間是:'+ SYSDATETIME()
-- 用加號會出現 " add 運算子中的資料類型 nvarchar 和 datetime2 不相容。"

select CONCAT(N'伺服器目前的時間是:',SYSDATETIME())
-- OK

CONCAT(City, ', ' + Region, + ', ' + Country)
-- concat多值串聯範例  :  Chimalhuacán, SP, Mexico

CONCAT 會採用可變數量的字串引數,並將其連成單一字串。
其至少需要兩個輸入值,否則會引發錯誤。
所有引數皆會以隱含方式轉換為字串類型,然後再行串連。
Null 值以隱含方式轉換為空白字串。 如果所有引數都是 Null,會傳回類型為 varchar(1) 的空白字串。
隱含轉換成字串會遵循現有的資料類型轉換規則。 

+號連結若有NULL字串會連結失敗(必須加上 ISNULL or COALESCE 判斷式 )

== 補0的寫法

範例:select RIGHT('00000'+ CAST(custid as varchar),5) 
-- 00001,00002,00003.....

== CHARINDEX

CHARINDEX ( expression1 ,expression2 [ , start_location ] )
expressionToFind :目標字符串,就是想要找到的字符串,最大長度為8000 。
expressionToSearch :用於被查找的字符串。
start_location:開始查找的位置,為空時默認從第一位開始查找。

搭配SUBSTING寫法範例
SELECT SUBSTRING('A1-123',1,CHARINDEX('-','A1-123')-1)
-- result : A1

留言

這個網誌中的熱門文章

TSQL Lab 09 習題

TSQL Lab 06 習題

TSQL Lab 08 習題