入力パラメーターに従ってサイズが設定された char 値を返すユーザー定義関数を作成したいと考えています。それが可能かどうかさえわかりませんが、とにかく聞いてみようと思いました。
したがって、次のようなクエリがあります。
SELECT
Convert(char(10), SUBSTRING('Field1', 1, 10)) AS Field1,
Convert(char(20), SUBSTRING('Value2', 1, 20)) AS Field2
これを書くことを可能にする関数を書きたいと思います:
SELECT
fn_ConvertAndPad('Field1', 10) AS Field1,
fn_ConvertAndPad('Field2', 20) AS Field2
出力を char(10) または char(20) として指定する方法はありますか?
これは私の(明らかに失敗した)試みでした:
ALTER FUNCTION [dbo].[fn_ConvertAndPad]
(
-- Add the parameters for the function here
@input varchar(100),
@length int
)
RETURNS char
AS
BEGIN
-- Declare the return variable here
DECLARE @Result char
-- Add the T-SQL statements to compute the return value here
DECLARE @blanks char(100)
SET @blanks = ' '
SELECT @Result = SUBSTRING(@input + @blanks, 1, @length)
-- Return the result of the function
RETURN @Result
END
いいえ、単に varchar を返すことはできません。フラットなテキスト出力用にパディングされた文字列が必要です。