当前位置:  开发笔记 > 编程语言 > 正文

在SQL Server查询中提取字符串的第一个单词

如何解决《在SQLServer查询中提取字符串的第一个单词》经验,为你挑选了3个好方法。

在sql server查询中提取字符串的第一个单词的最佳方法是什么?



1> Marc Gravell..:
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')



2> Ben Brandt..:

我想在没有单独功能的情况下做这样的事情,并提出了这种简单的单线方法:

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

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

这将返回结果"First"

它很短,只是不那么健壮,因为它假设你的字符串不是以空格开头.它将处理单字输入,多字输入和空字符串或NULL输入.


是的,这更符合我的需求.谢谢Ben.

3> 小智..:

RETURN语句之前添加以下内容将解决字段中包含前导空格的情况:

SET @Value = LTRIM(RTRIM(@Value))

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有