Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server 如何在sql server中查找字符串中的特殊字符并将其拆分为单词?_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 如何在sql server中查找字符串中的特殊字符并将其拆分为单词?

Sql server 如何在sql server中查找字符串中的特殊字符并将其拆分为单词?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有这样的“铃木GSX_1300/TWOWHEELER”线 现在,我想将上面的字符串拆分为单词,并将一个单词一个单词插入一个表中 DECLARE @a TABLE (a nvarchar(500)); declare @RTADESC nvarchar(100) = 'SUZUKI GSX_1300/TWOWHEELER'; declare @b int =1; declare @c int; set @c=CHARINDEX('_',@RTADESC,@b); WHILE @c>0

我有这样的“铃木GSX_1300/TWOWHEELER”线

现在,我想将上面的字符串拆分为单词,并将一个单词一个单词插入一个表中

DECLARE @a TABLE (a nvarchar(500));
declare @RTADESC nvarchar(100) = 'SUZUKI GSX_1300/TWOWHEELER';
declare @b int =1;
declare @c int;
set @c=CHARINDEX('_',@RTADESC,@b);

WHILE @c>0
        BEGIN
            SELECT @b= CHARINDEX('_' ,@RTADESC,@b)+1
            INSERT INTO @a
            SELECT SUBSTRING(@RTADESC,0,@b-1)
            set @c=CHARINDEX('_',@RTADESC,@b)
        END

        SELECT * FROM @a
现在我想看到表@a中的数据,如下所示

SUZUKI
GSX
1300
TWOWHEELER
基于此,我将在我的表格中搜索汽车制造商


因此,请帮助我如何分割字符串,我将来可能会得到不同的特殊字符。

以下是一些非常好的选项:


也有一些解决方案允许您传递分隔符,因此您可以在将来传递不同的分隔符。

以下是一些非常好的选项:


有一些解决方案允许您也传递分隔符,因此您可以在将来传递不同的分隔符。

关于SQL Server中拆分的想法:。关于SQL Server中拆分的想法:。@Dd2很好。只要分隔符的范围相对较小,就可以使用一系列返回任何特殊字符的第一个实例的
case when
语句。我建议将其作为一个独立的函数,以使代码更干净,特别是因为数据结构无疑需要在将来再次执行相同的任务。@Dd2考虑到OP在任何给定查询上可能执行的搜索数量,这可能是更明智的选择,因为它应该执行得更快。可能是一个新的计算持久化列,它用一个分隔符保存字符串的版本?!或者只是分成相应的列(制造商、制造商、型号、车轮等),然后正确地进行标准化@Dd2很好。只要分隔符的范围相对较小,就可以使用一系列返回任何特殊字符的第一个实例的
case when
语句。我建议将其作为一个独立的函数,以使代码更干净,特别是因为数据结构无疑需要在将来再次执行相同的任务。@Dd2考虑到OP在任何给定查询上可能执行的搜索数量,这可能是更明智的选择,因为它应该执行得更快。可能是一个新的计算持久化列,它用一个分隔符保存字符串的版本?!或者只是分成相应的列(制造商、制造商、型号、车轮等),然后正确地进行标准化