none
MCITP系列之Lewis’s gift time – 20070201- SQL Server 2005 CLR物件開發 RRS feed

  • 問題

  • [活動方式]

    老師於課程結束當天在論壇上po出當天課程內容相關問題,在「2天內」大家皆可踴躍回答,老師會選取出最快且最完整的回答,將之標示為「正確答案」,得獎者老師會於下次課堂上公佈(當然你也可以在2天後上論壇查看自己是否有被特別標註為解答),認真的幸運兒可能就是你喔 : P

    [注意事項]

    得獎者我們會查看你登入論壇的mail並寄信與您連絡,如果您等不到聯繫也可直接上論壇告知我們。

    [Question]

     1.請問如何利用CLR組件,建立一個函數,並實作出T-SQL的函數,讓資料庫數值欄位輸出時候,可以輸出每三位數值有一個千分位符號『,』,利如123456,變成123,456
    2007年2月4日 上午 01:56

解答

  • Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.Data.SqlTypes
    Imports Microsoft.SqlServer.Server

    Partial Public Class UserDefinedFunctions
        <Microsoft.SqlServer.Server.SqlFunction()> _
        Public Shared Function formatefunc(ByVal Number As Double) As SqlString
            Return New SqlString(Number.ToString("N0"))
        End Function
    End Class

    ---- Check Result

    SELECT dbo.formatefunc(123456) -> 123,456

    2007年2月6日 下午 02:23

所有回覆

  • using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using Microsoft.SqlServer.Server;

    public partial class UserDefinedFunctions

        [Microsoft.SqlServer.Server.SqlFunction]
        public static SqlString FormatIntString(SqlInt32 Number, SqlString FormatString)
        {
            return new SqlString(Number.Value.ToString(FormatString.Value));
        }
    };

    這樣就可以使用 SELECT * FROM dbo.FormatIntString(32768, '###,##0') 來輸出 "32,768" 的字串值。

    2007年2月5日 上午 03:50
  • Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.Data.SqlTypes
    Imports Microsoft.SqlServer.Server

    Partial Public Class UserDefinedFunctions
        <Microsoft.SqlServer.Server.SqlFunction()> _
        Public Shared Function formatefunc(ByVal Number As Double) As SqlString
            Return New SqlString(Number.ToString("N0"))
        End Function
    End Class

    ---- Check Result

    SELECT dbo.formatefunc(123456) -> 123,456

    2007年2月6日 下午 02:23