前幾天剛好有朋友問,怎麼下TSQL判斷,資料表中欄位含有中文的字,
就先想到可以用先把字串分解成一個一個的字元,再來做 ASCII 的比對,
建立的副程式如下
我的想法是因為最後一個英文 z 是122 ,所以比 122 大就判斷不是英文,
而 A-Z,a-z 的範圍 ASCII 如下
-- a 97
-- z 122
-- A 65
-- Z 90
01 |
CREATE FUNCTION [dbo].[udf_IsContainChinese] |
前幾天剛好有朋友問,怎麼下TSQL判斷,資料表中欄位含有中文的字,
就先想到可以用先把字串分解成一個一個的字元,再來做 ASCII 的比對,
建立的副程式如下
我的想法是因為最後一個英文 z 是122 ,所以比 122 大就判斷不是英文,
而 A-Z,a-z 的範圍 ASCII 如下
-- a 97
-- z 122
-- A 65
-- Z 90
01 |
CREATE FUNCTION [dbo].[udf_IsContainChinese] |
長久-是指先註冊主機資訊,再用此資訊做查詢
1 |
--註冊遠端伺服器名稱 |
2 |
EXEC sp_addlinkedserver 'otherDB' , '' , 'SQLOLEDB' , '192.168.*.*' -- 別名固定SQLServer |
3 |
EXEC sp_addlinkedsrvlogin 'otherDB' , 'false' , null , '帳號' , '密碼' --帳號密碼 |
4 |
删除 对于 用户“*****”失败。 (Microsoft.SqlServer.Smo)
有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1523.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=删除+User&LinkId=20476
------------------------------
其他信息:
小豬頭寫了個補 0 的 SQL 問我怎麼跑不出來
主要當然是他沒把數字轉字串所以 SQL 很雞婆會自動轉回數字
其次是他的技巧是 先判斷數字的長度 然後再不斷用 case-when 補字串 '000...'
換句話說 如果最大可能補 10 個 0 他的 SQL 就要寫 10 組 case-when
--当月天数
select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0)))
---当月第一天
select dateadd(d,-day(getdate())+1,getdate())
---当月最后一天
select dateadd(d,-day(getdate()),dateadd(m,1,getdate()))
--本年最后一天
select dateadd(d,-day(getdate()),dateadd(m,12,getdate()))
--当月第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')