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 server 2008 用空格分隔长单词_Sql Server 2008_Split - Fatal编程技术网

Sql server 2008 用空格分隔长单词

Sql server 2008 用空格分隔长单词,sql-server-2008,split,Sql Server 2008,Split,我有一个长字符串。我想检查整个字符串中是否有连续的15个字母,如果没有空格,我必须手动在sql server中放置空格。有人能帮忙吗 For eg. my string is 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ' then it should appear like 'ABCDEFGHIJKLMNOP QRSTUVWXYZABCDE FGHIJKLMNOPQRST UVWXYZ' 我不知道如何在一条语句上实现这一点,但您可

我有一个长字符串。我想检查整个字符串中是否有连续的15个字母,如果没有空格,我必须手动在sql server中放置空格。有人能帮忙吗

For eg. my string is 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ'
then it should appear like 'ABCDEFGHIJKLMNOP QRSTUVWXYZABCDE FGHIJKLMNOPQRST UVWXYZ'

我不知道如何在一条语句上实现这一点,但您可以创建类似这样的sql函数

create function AddStuffCharacterInLength (@original nvarchar(100), @take int, @stuff varchar(100))
returns nvarchar(200)
AS
BEGIN
    declare @result nvarchar(200)
declare @len int
declare @skip int

set @len = len(@original)
set @result = ''
set @skip = (@take * -1) + 1

    while @len > 0
    begin
        set @result = @result + substring(@original, @skip + @take, @take)
        set @len = @len - @take
        set @skip = @skip + @take
        if @len > 0
            set @result = @result + ' '
    end

    RETURN @result 
END
select dbo.AddStuffCharacterInLength ('ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ',15, ' ')
像这样使用它

create function AddStuffCharacterInLength (@original nvarchar(100), @take int, @stuff varchar(100))
returns nvarchar(200)
AS
BEGIN
    declare @result nvarchar(200)
declare @len int
declare @skip int

set @len = len(@original)
set @result = ''
set @skip = (@take * -1) + 1

    while @len > 0
    begin
        set @result = @result + substring(@original, @skip + @take, @take)
        set @len = @len - @take
        set @skip = @skip + @take
        if @len > 0
            set @result = @result + ' '
    end

    RETURN @result 
END
select dbo.AddStuffCharacterInLength ('ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ',15, ' ')
输出应该是

----------------------------------------------------------------------------------------------------
ABCDEFGHIJKLMNO PQRSTUVWXYZABCD EFGHIJKLMNOPQRS TUVWXYZ

(1 row(s) affected)

我不知道如何在一条语句上实现这一点,但您可以创建类似这样的sql函数

create function AddStuffCharacterInLength (@original nvarchar(100), @take int, @stuff varchar(100))
returns nvarchar(200)
AS
BEGIN
    declare @result nvarchar(200)
declare @len int
declare @skip int

set @len = len(@original)
set @result = ''
set @skip = (@take * -1) + 1

    while @len > 0
    begin
        set @result = @result + substring(@original, @skip + @take, @take)
        set @len = @len - @take
        set @skip = @skip + @take
        if @len > 0
            set @result = @result + ' '
    end

    RETURN @result 
END
select dbo.AddStuffCharacterInLength ('ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ',15, ' ')
像这样使用它

create function AddStuffCharacterInLength (@original nvarchar(100), @take int, @stuff varchar(100))
returns nvarchar(200)
AS
BEGIN
    declare @result nvarchar(200)
declare @len int
declare @skip int

set @len = len(@original)
set @result = ''
set @skip = (@take * -1) + 1

    while @len > 0
    begin
        set @result = @result + substring(@original, @skip + @take, @take)
        set @len = @len - @take
        set @skip = @skip + @take
        if @len > 0
            set @result = @result + ' '
    end

    RETURN @result 
END
select dbo.AddStuffCharacterInLength ('ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ',15, ' ')
输出应该是

----------------------------------------------------------------------------------------------------
ABCDEFGHIJKLMNO PQRSTUVWXYZABCD EFGHIJKLMNOPQRS TUVWXYZ

(1 row(s) affected)

你可以使用这样的函数

IF EXISTS(SELECT * FROM sysobjects WHERE ID = OBJECT_ID('UF_StringSplitter'))
 DROP FUNCTION UF_StringSplitter
GO

CREATE FUNCTION UF_StringSplitter
(
 @psCSString VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
 DECLARE @sTemp VARCHAR(MAX)
 DECLARE @tTemp VARCHAR(MAX)
 SET @tTemp=''

 WHILE LEN(@psCSString)>15
 BEGIN
  SET @sTemp = LEFT(@psCSString, 15)
  SET @psCSString = SUBSTRING(@psCSString,16, LEN(@psCSString))

  IF @psCSString LIKE ' %'
     SET @tTemp=@tTemp+@sTemp   
  ELSE      
     SET @tTemp=@tTemp+@sTemp+' '      
 END
 SET @tTemp=@tTemp+@psCSString
RETURN @tTemp
END
Go
这里我已经硬编码了分割值,您可以使用这个函数

UPDATE mytable SET mycol=dbo.UF_StringSplitter(mycol)

你可以使用这样的函数

IF EXISTS(SELECT * FROM sysobjects WHERE ID = OBJECT_ID('UF_StringSplitter'))
 DROP FUNCTION UF_StringSplitter
GO

CREATE FUNCTION UF_StringSplitter
(
 @psCSString VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
 DECLARE @sTemp VARCHAR(MAX)
 DECLARE @tTemp VARCHAR(MAX)
 SET @tTemp=''

 WHILE LEN(@psCSString)>15
 BEGIN
  SET @sTemp = LEFT(@psCSString, 15)
  SET @psCSString = SUBSTRING(@psCSString,16, LEN(@psCSString))

  IF @psCSString LIKE ' %'
     SET @tTemp=@tTemp+@sTemp   
  ELSE      
     SET @tTemp=@tTemp+@sTemp+' '      
 END
 SET @tTemp=@tTemp+@psCSString
RETURN @tTemp
END
Go
这里我已经硬编码了分割值,您可以使用这个函数

UPDATE mytable SET mycol=dbo.UF_StringSplitter(mycol)

@dcp1986:我尝试了以下功能

SELECT dbo.UF_StringSplitter('HeloEveryonehru Howslyfgoingonn HaveaGoodDayGoodMorning')
但意外的分裂发生了。我认为您的函数必须修改如下,以获得正确的结果:

IF EXISTS(SELECT * FROM sysobjects WHERE ID = OBJECT_ID('UF_StringSplitter'))
    DROP FUNCTION UF_StringSplitter
GO

CREATE FUNCTION UF_StringSplitter (
 @psCSString VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
 DECLARE @sTemp VARCHAR(MAX)
 DECLARE @tTemp VARCHAR(MAX)
 SET @tTemp=''

 WHILE LEN(@psCSString)>15
 BEGIN
  SET @sTemp = LEFT(LTRIM(@psCSString), 15)
  SET @psCSString = LTRIM(SUBSTRING(@psCSString,16, LEN(@psCSString)))

  IF @psCSString LIKE ' %'
     SET @tTemp=@tTemp+@sTemp   
  ELSE      
     SET @tTemp=@tTemp+@sTemp+' '      
 END
 SET @tTemp=@tTemp+@psCSString
RETURN @tTemp
END

@dcp1986:我尝试了以下功能

SELECT dbo.UF_StringSplitter('HeloEveryonehru Howslyfgoingonn HaveaGoodDayGoodMorning')
但意外的分裂发生了。我认为您的函数必须修改如下,以获得正确的结果:

IF EXISTS(SELECT * FROM sysobjects WHERE ID = OBJECT_ID('UF_StringSplitter'))
    DROP FUNCTION UF_StringSplitter
GO

CREATE FUNCTION UF_StringSplitter (
 @psCSString VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
 DECLARE @sTemp VARCHAR(MAX)
 DECLARE @tTemp VARCHAR(MAX)
 SET @tTemp=''

 WHILE LEN(@psCSString)>15
 BEGIN
  SET @sTemp = LEFT(LTRIM(@psCSString), 15)
  SET @psCSString = LTRIM(SUBSTRING(@psCSString,16, LEN(@psCSString)))

  IF @psCSString LIKE ' %'
     SET @tTemp=@tTemp+@sTemp   
  ELSE      
     SET @tTemp=@tTemp+@sTemp+' '      
 END
 SET @tTemp=@tTemp+@psCSString
RETURN @tTemp
END

为了让系统允许你提出这个问题,你必须将文章的一部分格式化为代码。这是一个强烈的提示,您应该发布您尝试过的代码。您必须将部分帖子格式化为代码,以便系统允许您提问。这是一个强烈的提示,您应该发布您尝试过的代码。再试一次,这是一个错误,一个变量被声明了两次。再试一次,这是一个错误,一个变量被声明了两次