の文字列の分離は、だから私は検索からある文字列を持っており、それは私が10文字で単語をカットしたい複数の単語を含めることができますSQL Serverの - 長さのカットオフ
DECLARE @SearchString varchar(255) = 'Administration Duplication'
になる。すなわち:'Administra Duplicatio'
の文字列の分離は、だから私は検索からある文字列を持っており、それは私が10文字で単語をカットしたい複数の単語を含めることができますSQL Serverの - 長さのカットオフ
DECLARE @SearchString varchar(255) = 'Administration Duplication'
になる。すなわち:'Administra Duplicatio'
いくつかの変更とhereから:
Create Function dbo.[getFirstTenCharacters]
(
@String Varchar(Max)
)
RETURNS Varchar(Max)
BEGIN
Declare @Xml Xml
Declare @firsttenletter Varchar(Max)
Declare @delimiter Varchar(5)
SET @delimiter=' '
SET @Xml = cast(('<a>'+replace(@String,@delimiter,'</a><a>')+'</a>') AS XML)
;With CTE AS (SELECT A.value('.', 'varchar(max)') as [Column]
FROM @Xml.nodes('a') AS FN(a))
SELECT @firsttenletter =Stuff((SELECT ' ' + LEFT([Column],10)
FROM CTE
FOR XML PATH('')),1,0,'')
RETURN (@firsttenletter)
END
GO
SELECT dbo.[getFirstTenCharacters]('Administration Duplication');
私のためには、これは、メッセージ4121、レベル16、状態1、行1をしなかった 列 "A"またはユーザー定義関数または集計"A.value"、または名前があいまいです。 –
@GregWhite: - 確かに、同じコードを使用しましたか?それは私のために働いた。画像も追加されました! –
@GregWhite: - デモも添付しました。あなたはそれを確認することができます:) http://sqlfiddle.com/#!6/ac9aa/1 –
文字列を分割する関数を作成します。 はこのようなものになります。
CREATE FUNCTION [dbo].[SPLIT_STRING](
@TEXT varchar(8000)
,@COLUMN int
,@SEPARATOR varchar(1)
)RETURNS varchar(8000)
AS
BEGIN
DECLARE @POS_START int = 1
DECLARE @POS_END int = CHARINDEX(@SEPARATOR, @TEXT, @POS_START)
WHILE (@COLUMN >1 AND @POS_END> 0)
BEGIN
SET @POS_START = @POS_END + 1
SET @POS_END = CHARINDEX(@SEPARATOR, @TEXT, @POS_START)
SET @COLUMN = @COLUMN - 1
END
IF @COLUMN > 1 SET @POS_START = LEN(@TEXT) + 1
IF @POS_END = 0 SET @POS_END = LEN(@TEXT) + 1
RETURN SUBSTRING (@TEXT, @POS_START, @POS_END - @POS_START)
END
をTHEN DO:
SELECT LEFT([dbo].[SPLIT_STRING](COLNAME,1,' '),10)+LEFT([dbo].[SPLIT_STRING](COLNAME,2,' '),10)
をむしろ簡単なバージョンでも有効な構文ではありません
DECLARE @SearchString Varchar(255) = 'Administration Duplication'
;WITH X AS (
SELECT Split.a.value('.', 'VARCHAR(10)') Words
FROM
(SELECT Cast ('<X>' +
Replace(@SearchString, ' ', '</X><X>') + '</X>' AS XML) AS Data
) AS t CROSS APPLY Data.nodes ('/X') AS Split(a)
)
SELECT STUFF((SELECT ' ' + Words
FROM X
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,1,'')
.....のようになります。 – Squirrel
申し訳ありませんが、テストなしで入力:@SearchStringを宣言するVarchar(255)= 'Administration Duplication' –
あなたは実際に何を達成しようとしていますか? –