如何在sql中selec時將數字自動加上千分號(配合CLR)

  • 11127
  • 0
  • C#
  • 2010-11-04

如何在sql中selec時將數字自動加上千分號

一般若是要在畫面中呈現數字有千分號時,會在程式的時候,做字串格式化的動作

那這個動作,其實也可以在sql server中下select時就準備好,而不用到程式中再轉換一次,不過會需要用到CLR整合

如果你是使用sql server2005,則要開啟CLR整合的設定

clip_image001[5]_thumb[1]

clip_image002[5]_thumb[1]

如果是sql server 2008 ,則在dbserver上按滑鼠右鍵,選擇Facet

clip_image003[5]_thumb[1] '

將clr選項設為true

clip_image004[5]_thumb[1]

接下來開啟vs2005或vs2008都可以,建立一個資料庫的sql server專案

clip_image005[5]_thumb[1]

接下來會出現要設定的資料庫參考,請加入

clip_image006[5]_thumb[1]

若有出現這個訊息,按是

clip_image007[6]_thumb

之後要加一個使用者定義函數,請照下圖操作

clip_image008[5]_thumb[1]

給一個檔名,不想變的話就是加入即可

clip_image009[5]_thumb[1]

然後打開cs檔來撰寫程式碼

clip_image010[5]_thumb[1]

因為我們要用到c#的語法,所以要using Microsoft.CSharp;

並且要傳入一個decimal值,以下為程式碼

		   1: public static SqlString fnFormat(decimal  n)
		   2: {
		   3:      // 在此輸入程式碼
		   4:      return new SqlString(string.Format("{0}","#,##0",n));
		   5: }

寫完之後,我們在方案按右鍵,選部署

clip_image011[5]_thumb[1]

部署成功後,回到sql server,我們可以在可程式性->函數->純量值函數下看到所設定的名稱

clip_image012[5]_thumb[2]

好啦,然後我們來測試一下結果如何?

新增一個查詢,執行下列sql語法看看囉

select dbo.fnFormat(123456) as  'is format',123456 as 'no format'

結果為…酷啊~有千分位了

clip_image013[4]_thumb

‧覺得文章不錯請給我一個『讚』作為鼓勵喔!