Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按空格分割字符串_Sql_Sql Server 2008_Split - Fatal编程技术网

Sql 按空格分割字符串

Sql 按空格分割字符串,sql,sql-server-2008,split,Sql,Sql Server 2008,Split,我正在尝试使用字符串拆分的结果,使其在sql条件中接近 我的表有一个varchar列。我正在尝试过滤只显示一个单词的结果 例如,如果表中有像“ABC DEF”、“XYZ”、“EGF HIJ”这样的值,那么我希望得到的结果只有“XYZ” 我不确定在这里使用什么,尽管在列中拆分每个值是一种方法。但我不知道我怎么能把它作为一个条件 我看了一些分裂的样本如下 DECLARE @Str VARCHAR(100) ='Test Word' SELECT SUBSTRING(@Str , 1, CHARIN

我正在尝试使用字符串拆分的结果,使其在sql条件中接近

我的表有一个
varchar
列。我正在尝试过滤只显示一个单词的结果

例如,如果表中有像“ABC DEF”、“XYZ”、“EGF HIJ”这样的值,那么我希望得到的结果只有“XYZ”

我不确定在这里使用什么,尽管在列中拆分每个值是一种方法。但我不知道我怎么能把它作为一个条件

我看了一些分裂的样本如下

DECLARE @Str VARCHAR(100) ='Test Word'

SELECT SUBSTRING(@Str , 1, CHARINDEX(' ', @Str ) - 1) AS [First],
       SUBSTRING(@Str , CHARINDEX(' ', @Str ) + 1, LEN(@Str )) AS [Last]

若要在中仅获取包含

tableName.fieldName
'ABC DEF'
'XYZ'
'EGF HIJ' 
这样做

SELECT * 
FROM tableName
WHERE CHARINDEX(' ',fieldname) = 0
这应该起作用:

DECLARE @table TABLE (string VARCHAR(20))
INSERT @table VALUES ('ABC DEF')
INSERT @table VALUES ('XYZ')
INSERT @table VALUES ('EGF HIJ')

SELECT * FROM @table
WHERE CHARINDEX(' ', string) = 0
这也是一项工作


这个答案可以帮助你(如果你坚持走“字符串拆分”的道路):@tEsTA与这个问题无关(据我所知)@Hogan:“我不确定在这里使用什么,尽管在列中拆分每个值是一种方法”。所以我同意不需要标记,但它确实与这个问题有关(这是一种可能的解决方法,即使很麻烦)。@Hogan:顺便说一句,“标记化”就是这个意思。特别是当你错了的时候,不需要嘲笑。这不是tokenize的意思。考虑这个字符串:“<代码> 1 + 1=2 /代码>”这里的标记与空格无关。难道这不是CAREQUEST(‘,字段名’=0)吗?使用<代码>,其中字符索引('',LtrIM(rTrimm(FieldNeX)))=0 < /Cord>这很好!huMptyduMpty-你明白了
=0
将为您提供带有一个单词的项目,
>0
将为您提供带有两个单词的项目——是的,如果您有前导空格或尾随空格,则需要删除这些空格。
select SUBSTRING(EmpName,0,CHARINDEX(' ',EmpName)),SUBSTRING(EmpName,CHARINDEX(' ',EmpName),LEN(EMPNAME)) 
from tblemployee