0

nvarchar セルの最初の単語を選択しようとしています。たとえば、テキスト フィールドは次のように表示されます。

Marcus Jones Contractors 
Pertues Smiths Blacksmiths

各行の最初の世界だけを抽出したいですか?

4

2 に答える 2

1
SELECT CASE CHARINDEX(' ', @Foo, 1)
 WHEN 0 THEN @Foo -- empty or single word
 ELSE SUBSTRING(@Foo, 1, CHARINDEX(' ', @Foo, 1) - 1) -- multi-word
END

おそらくUDFでこれを使用できます:

CREATE FUNCTION [dbo].[FirstWord] (@value varchar(max))
RETURNS varchar(max)
AS
BEGIN
RETURN CASE CHARINDEX(' ', @value, 1)
    WHEN 0 THEN @value
    ELSE SUBSTRING(@value, 1, CHARINDEX(' ', @value, 1) - 1) END
END

GO -- test:
SELECT dbo.FirstWord(NULL)
SELECT dbo.FirstWord('')
SELECT dbo.FirstWord('abc')
SELECT dbo.FirstWord('abc def')
SELECT dbo.FirstWord('abc def ghi')

または

DECLARE @test NVARCHAR(255)
SET @test = 'First Second'

SELECT SUBSTRING(@test,1,(CHARINDEX(' ',@test + ' ')-1))

これにより、結果「First」が返されます

于 2013-08-21T09:10:51.117 に答える