最近都在組sql,table裡有十二個欄位分別記錄十二個月的狀態,
但是我只要判斷他記錄最後一個月(有個能是二月、也有可能是十一月)狀態來比對,
所以我就把十二個欄位相加起來,null值就給他'A',另給他一欄叫SalesStatus,
SalesStatus的值有可能會這幾種情況AA21122A1AAA 或 322221122222 或 AAAAAAAAAAAA。
因為只要最後一個狀態,所以要從右邊數過來第一個不為A的值,
想了好久,在GOOGLE上面找到PATINDEX這個指令,他可以用萬用字元,YA~
SELECT PATINDEX('%[^A]%',REVERSE(rtrim('AA21122A1AAA'))) ->4
SELECT PATINDEX('%[^A]%',REVERSE(rtrim('322221122222'))) ->1
SELECT PATINDEX('%[^A]%',REVERSE(rtrim('AAAAAAAAAAAA'))) ->0
ps:
1:REVERSE<--這個指令之前介紹過會把字串反過來
AA21122A1AAA ->AAA1A22112AA
322221122222 ->222221122223
A122222AA222 ->222AA222221A
2:[^]萬用字元 - 不相符的字元
2008年12月1日 星期一
2008年11月20日 星期四
[ASP.NET]DropDownList 下拉選項預設項目
以前我們用DropDownList加上databind()時~
事先在DropDownList設的下拉選項會被清掉重新載入資料~
當我們要在第一筆加上一個選項~
就會這樣寫
DropDownList1.Items.Insert(0, new ListItem("全部", "-1"));
現在有個新方法,直接可以這樣設就是在
"DropDownList 請將 AppendDataBoundItems 設定為 true"
這樣就不會被清掉囉
事先在DropDownList設的下拉選項會被清掉重新載入資料~
當我們要在第一筆加上一個選項~
就會這樣寫
DropDownList1.Items.Insert(0, new ListItem("全部", "-1"));
現在有個新方法,直接可以這樣設就是在
"DropDownList 請將 AppendDataBoundItems 設定為 true"
這樣就不會被清掉囉
SQL 從右邊取得字元
前一陣子在作轉檔的東西~
其中的一項是要從右邊數過來取第一個空白來判斷~
後來在google大神上找到了這個~
declare @s nvarchar(10)
declare @dd nvarchar(50)
declare @sp_name nvarchar(50)
set @sp_name='wang.ji.kun.wav'
set @dd=REVERSE(@sp_name)
--會變成vaw.nuk.ij.gnaw
set @s=substring( @dd,0,charindex('.',@dd,0))
select reverse(@s)
就是這個"REVERSE()"sql指令可以使你的字串反過來~
還不錯用~
其中的一項是要從右邊數過來取第一個空白來判斷~
後來在google大神上找到了這個~
declare @s nvarchar(10)
declare @dd nvarchar(50)
declare @sp_name nvarchar(50)
set @sp_name='wang.ji.kun.wav'
set @dd=REVERSE(@sp_name)
--會變成vaw.nuk.ij.gnaw
set @s=substring( @dd,0,charindex('.',@dd,0))
select reverse(@s)
就是這個"REVERSE()"sql指令可以使你的字串反過來~
還不錯用~
2008年8月5日 星期二
介面
我覺得下面這個BLOG說的很不錯~
看了大概都懂了~
在.Net Go2 OO 物件導向設計學習路徑 裡有在介紹學物件導向的路徑~
我是從這編開始看起
話說從頭 - 為什麼要使用物件導向設計 (OOD)
為什麼要針對介面寫程式?
你搞懂抽象類別別與介面了嗎?(一)
你搞懂抽象類別別與介面了嗎?(二)
我想看完以上幾遍,就會了解介面是什麼了~~
看了大概都懂了~
在.Net Go2 OO 物件導向設計學習路徑 裡有在介紹學物件導向的路徑~
我是從這編開始看起
話說從頭 - 為什麼要使用物件導向設計 (OOD)
為什麼要針對介面寫程式?
你搞懂抽象類別別與介面了嗎?(一)
你搞懂抽象類別別與介面了嗎?(二)
我想看完以上幾遍,就會了解介面是什麼了~~
2008年7月14日 星期一
ajax在.NET裡的alert
以前在沒有用ajax時~
要alert會這樣寫~
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('存檔完成')", true);
但是如果你有用AJAX 的 updatepanel時,這樣寫會alert不出來。
故要改成:
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "alert", "alert('存檔完成')", true);
就ok了
要alert會這樣寫~
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('存檔完成')", true);
但是如果你有用AJAX 的 updatepanel時,這樣寫會alert不出來。
故要改成:
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "alert", "alert('存檔完成')", true);
就ok了
2008年2月19日 星期二
按下enter鍵時,觸發查詢的onclick
txtReportNo.Attributes.Add("onkeydown","if(event.keyCode==13)
{" + this.GetPostBackEventReference(btnSearch,"") + "}");
當輸入完TextBox時,直接按下enter,要去觸發查詢onclick事件。
可以用上面的方法寫。寫在page_load裡。
{" + this.GetPostBackEventReference(btnSearch,"") + "}");
當輸入完TextBox時,直接按下enter,要去觸發查詢onclick事件。
可以用上面的方法寫。寫在page_load裡。
2008年2月14日 星期四
2008年1月22日 星期二
2008年1月15日 星期二
SQL 的identity
欲在select出來資料前面加序號~
可以用identity~
但是要注意一點就是,select出來要into #table裡~
ex:
select 自取欄位名稱=identity(int,1,1),* into #tmptable from 資料表
select * from #tmptable
drop table #tmptable
另一個要注意的地方是identity(int,1,1)裡的int要小寫,大寫會有問題。
可以用identity~
但是要注意一點就是,select出來要into #table裡~
ex:
select 自取欄位名稱=identity(int,1,1),* into #tmptable from 資料表
select * from #tmptable
drop table #tmptable
另一個要注意的地方是identity(int,1,1)裡的int要小寫,大寫會有問題。
訂閱:
文章 (Atom)