がyy/mm/dd/hh/
SQL Serverの - DATEPARTなどの機能に引用符で囲まれていない定数を渡すと、私は のような一定のDATEPART関数を受け入れる関数を作成したい
などの受け入れん:
私は選択日付要素(DD、GETDATEを私は
dd
が'dd'
のようにchar型ではない受け入れる自分の関数を作成したいと思います())
がMyFuncと選択MyFuncと(DD、GETDATE())
なく
を選択したい
( 'DD'、GETDATE())を
がyy/mm/dd/hh/
SQL Serverの - DATEPARTなどの機能に引用符で囲まれていない定数を渡すと、私は のような一定のDATEPART関数を受け入れる関数を作成したい
などの受け入れん:
私は選択日付要素(DD、GETDATEを私は
dd
が'dd'
のようにchar型ではない受け入れる自分の関数を作成したいと思います())
がMyFuncと選択MyFuncと(DD、GETDATE())
なく
を選択したい
( 'DD'、GETDATE())を
i 'はD-D'
私はあなたを考える」のようchar型ではないDD受け付けて自分の関数を作成したいですこれに運が戻ってくる。文字を一重引用符で囲まないと、名前として解釈されますが、あなたが提案した方法でそれらを使用したい場合は、どこにでも名前として定義することはできません。
あなたは本当にUDFの入力を小さな値のセットに制限することはできません。 ge)。もちろん
CREATE TABLE MyEnumTable (DatePartID tinyint, DatePartValue char(2))
GO
INSERT MyEnumTable(DatePartID, DatePartValue)
SELECT 1, 'yy'
UNION
SELECT 2, 'mm'
UNION
SELECT 3, 'dd'
UNION
SELECT 4, 'hh'
GO
CREATE FUNCTION MyDatePart(@IntervalType tinyint)
RETURNS varchar(255)
AS
BEGIN
IF NOT EXISTS (SELECT * FROM MyEnumTable WHERE DatePartID = @IntervalType)
RETURN 'Invalid IntervalType'
--Do your stuff
DECLARE @DatePartvalue char(2)
SELECT @DatePartValue = DatePartValue
FROM MyEnumTable
WHERE DatePartID = @IntervalType
RETURN @DatePartValue
END
GO
--Check it out
SELECT dbo.MyDatePart(3), dbo.MyDatePart(12)
は、私の例が単純化されていますが、あなたのアイデアを得る:このような何か -
は、私はあなたの列挙値のための田部を作成することをお勧めします。
また、setステートメントでudfを使用する予定がある場合は、パフォーマンス上の理由から、この関数をテーブル値の関数にすることを検討してください。私はここで、様々な関数型のパフォーマンスへの影響についてブログ:
http://thehobt.blogspot.com/2009/02/scalar-functions-vs-table-valued.html
おそらく、db2以外のユーザーのために、trim()関数がdb2で何をしているのかを詳しく説明することができます。 –