如何将3个章程拆分为sql server中的最后一个字符 [英] how to split 3 charters upto last character in sql server

查看:78
本文介绍了如何将3个章程拆分为sql server中的最后一个字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我在sql server中有一个疑问 
$


如何在sql server中分割3到最后一个字符的长度 



table:emp 

id  |姓名  

1    | harikrishnaxx

2    | Baludevu



基于以上数据我想要输出如下: 



id  |姓名 

1    | har

1    | ikr

1    | ish

1    | nax

1    | x

2    | bal

2    | ude

2    | vu





i尝试如下: 

1st我创建了tablevalued函数然后调用了这个emp表中的功能 



创建  FUNCTION DatesBetween(@name varchar(50))

RETURNS @dates TABLE(

   DateValue varchar(50)  NULL

)&bbsp
AS

BEGIN

声明@fin varchar(50)

声明@len int = (选择len(@name))

声明@i int 

set @ i = 1

while(@ i< = @ len)

begin

插入@dates(DateValue)值(@fin)

set  @fin = SUBSTRING(@ name,@ i,3)

set @ i = @ i + 3

    END;

  RETURN;

END;



select  id,    dbo.DatesBetween(name)from emp 



但以上查询未获得确切结果。

你能告诉我怎么样在sql server中解决这个问题 

Hi I have one doubt in sql server 

how to split length of 3 upto last charcters in sql server 

table : emp 
id  | name  
1   | harikrishnaxx
2   | Baludevu

based on above data I want output like below : 

id  | name 
1   | har
1   |ikr
1   |ish
1   |nax
1   |x
2   | bal
2   |ude
2   |vu


i tried like below : 
1st I create tablevalued funtion then called this function in emp table 

create  FUNCTION DatesBetween(@name varchar(50))
RETURNS @dates TABLE (
   DateValue varchar(50)  NULL

AS
BEGIN
declare @fin varchar(50)
declare @len int = (select len(@name))
declare @i int 
set @i=1
while (@i <=@len)
begin
insert into @dates (DateValue)values(@fin)
set  @fin =SUBSTRING (@name ,@i,3)
set @i=@i+3
   END;
 RETURN;
END;

select  id ,   dbo.DatesBetween(name ) from emp 

but above query not getting exact result .
can you please tell me how to solve this issue in sql server 

推荐答案

更近距离地查看函数的逻辑。您会发现需要交换两行。

Review the logic of your function a little closer. You will find that you need to swap two lines.


这篇关于如何将3个章程拆分为sql server中的最后一个字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆