1. 程式人生 > >常用的資料庫sql工作記錄

常用的資料庫sql工作記錄

在sql server 中 定義一個值 

declare @pur_type varchar(10)='OrderDetail';

between and 日期類 的話   A  between  ‘q年w月e日’ and  ‘a年s月d日’  則從q年w月e日 00:00:00 到 a年s月d日 23:59:59

檢視觸發器

select * from sysobjects where xtype='TR'

檢視觸發器內容

exec sp_helptext tr_rm_vip_cls_discount_delete

With (NoLock) 處理資料庫死鎖的異常時候使用NOLOCK 或者READPAST

它們區別:NOLOCK 可能把沒有提交事務的資料也顯示出來

READPAST會把鎖住的行不顯示出來

使用 案例  SELECT  欄位名 FROM 表名 WITH (NOLOCK) 

 CASE WHEN THEN

(case pay_flag when 1 then '凍結' when 1 then '正常'  else '正常' end ) as pay_flag

NULLIF、NULL、ISNULL、COALESCE、IIF

BULLIF(除數為0的sql判斷):

NULLIF(Expression1,Expression2):給定兩個引數Expression1和Expression2,如果兩個引數相等,則返回NULL;否則就返回第一個引數。等價於:Case WHEN Expression1=Expression2 Then NULL ELSE Expression1。
例如Select NULLIF(1,1)返回NULL,Select NULLIF(1,2)返回1。
有一個實際的應用,例如防止除0操作的放生,可以使用a/NULLIF(b,0),這樣就不怕b是0了,當然除0操作也可以通過別的方式判斷。

NULL: 是個神奇的東西,表示空值,未知值,任何數與它加減乘除都返回NULL。

ISNULL: ISNULL(Expression1,Expression2):給定兩個引數Expression1和Expression2,如果Expression1是NULL,那麼返回Expression2,否則返回Expression1。 等價於:Case WHEN Expression1 is NULL Then Expression2 ELSE Expression1。  例如Select ISNULL(NULL,1)返回1,Select ISNULL(1,2)返回1。   

有一個實際的應用,可以對空值進行預設值替代,例如SELECT ISNULL(email,'沒有填寫email') from table1,所有email為null的,用'沒有填寫email'來替代。

COALESCE:

COALESCE(Expression1,Expression2,Expression3,......):接受一系列的表示式或列,返回第一個非空的值。 例如SELECT COALESCE(NULL,NULL,4,NULL,NULL,5),那麼返回,如果裡面的引數都為NULL,那麼會報錯。

 

事務:BEGIN TRANSACTION   sql邏輯   END TRANSACTION 

修改表字段型別長度  alter table t_pm_sheet_detail alter column memo varchar(200)
GO 

更新表字段資訊

if exists(SELECT sys_var_value FROM t_sys_system  WHERE sys_var_id ='MoneyMask' and sys_var_value not like '%0%')
    update t_sys_system set sys_var_value='#,###,###,##0.00'  WHERE sys_var_id ='MoneyMask'
   GO