があります。しかし、この関数は必要なものを得ることができます。
CREATE FUNCTION [dbo].[fn_InitCapWord] (@InputString varchar(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @Index INT
DECLARE @OutputString VARCHAR(1000)
DECLARE @substr VARCHAR(1000)
SET @OutputString = ''
WHILE (LEN(@InputString) > 0)
BEGIN
IF (SUBSTRING(@InputString ,2,1) COLLATE Latin1_General_BIN LIKE '%[A-Z]%')
SELECT @Index = PATINDEX('%[a-z]%',SUBSTRING(@InputString,2,999) COLLATE Latin1_General_BIN) -1
ELSE
SELECT @Index = PATINDEX('%[A-Z]%',SUBSTRING(@InputString,2,999) COLLATE Latin1_General_BIN)
SELECT @substr =
CASE WHEN @Index >= 1
THEN SUBSTRING(@InputString,1,@Index)
ELSE @InputString
END
SELECT @OutputString = @OutputString + RTRIM(@substr) + ' '
SELECT @InputString = RIGHT(@InputString,CASE WHEN @Index<=0 THEN 0 ELSE LEN(@InputString) - @Index END)
END
RETURN RTRIM(@OutputString)
END
例:
PRINT dbo.fn_InitCapWord('ProductionIssueID')
PRINT dbo.fn_InitCapWord('MAXSerialNo')
PRINT dbo.fn_InitCapWord('ProductID')
PRINT dbo.fn_InitCapWord('Item')
OUTPUT:
Production Issue ID
MAX Serial No
Product ID
Item
UPDATE: Iは、機能を変更しました。今はスペースを処理できるはずです。
PRINT dbo.fn_InitCapWord('Production IssueID')
OUTPUT:
Production Issue ID
がTSQL http://stackoverflow.com/q/230138/73226経由で変換を行うためにここに答えの一つを調整することができるはずですが、本当にあなたがする必要があるだろう動的SQLを使用せずに戻された列名を変更できないため、プレゼンテーション層言語が何であれ、これを実行します。 –
@Smith各列名は、いずれかのマスターテーブルに保存されます。私は、列から直接ではなく、マスター表の列からUIを生成しています。 – Nagesh
UIを生成するために何を使用していますか? TSQLの文字列関数は制限されています。開発環境は正規表現をサポートしていますか? Asエイリアスは、TSQLによって返された列名を動的に変更できないように、ハードコードされている必要があります。 – Paparazzi