首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中字符串连接中的问题

SQL中字符串连接中的问题
EN

Stack Overflow用户
提问于 2016-02-03 13:45:55
回答 3查看 106关注 0票数 0
代码语言:javascript
复制
Declare @convertname nvarchar(200) 
Declare @i int
Declare @iValueConvertToString  nvarchar(200)
Declare @tempSename nvarchar(200) 
Declare @checkname int; 

SET @i = 0

While(@i>=0)   
BEGIN
  @checkname=db0.fuctionabc (// this function check name is exist in record, if name is not exist it returns 0)  

  if(@checkname=0)
  begin
   --------- insert query ------------------
  Break;
  End
   SET @i=@i+1;

   SET @iValueConvertToString = CAST(@i AS varchar(10))

  SET @tempSename = @Convertname + '-'+ @iValueConvertToString

  SET @Convertname=@tempSename

END

我喜欢这个结果

代码语言:javascript
复制
    abc-1
    abc-1-2
    abc-1-2-3
    abc-1-2-3-4

但我想要的结果是

代码语言:javascript
复制
abc-1
abc-2
abc-3
abc-4

在我的字符串连接逻辑中有什么要改变的?

我是sql的新手,请指导我。

EN

回答 3

Stack Overflow用户

发布于 2016-02-03 13:50:04

这会对你有帮助

代码语言:javascript
复制
DECLARE @i  int = 1;
DECLARE @val nvarchar(99) = 'abc';
While(@i<= 5)
BEGIN
   PRINT @val + '-'+ cast(@i AS VARCHAR)
   SET @i=@i+1;
END
票数 3
EN

Stack Overflow用户

发布于 2016-02-03 13:51:36

这样的东西对你有用吗?:

代码语言:javascript
复制
SET @i = 0
WHILE(@i <= 5)

BEGIN
    SET @i=@i+1;
    SET @iValueConvertToString = CAST(@i AS varchar(10))
    SET @output = @Convertname + '-'+ @iValueConvertToString
    PRINT @output;
END

您原本打算在WHILE循环中将@Convertname作为常量使用,但您在每次迭代时都将其连接起来。使用单独的变量进行显示可避免此问题。

票数 2
EN

Stack Overflow用户

发布于 2016-02-03 14:09:51

你可以在没有循环的情况下做到这一点。下面是一种使用Tally Table的方法

代码语言:javascript
复制
DECLARE @convertname NVARCHAR(200) = 'abc'
DECLARE @limit INT = 5

;WITH E1(N) AS( -- 10 ^ 1 = 10 rows
    SELECT 1 FROM(VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))t(N)
),
E2(N) AS(SELECT 1 FROM E1 a CROSS JOIN E1 b), -- 10 ^ 2 = 100 rows
E4(N) AS(SELECT 1 FROM E2 a CROSS JOIN E2 b), -- 10 ^ 4 = 10,000 rows
CteTally(N) AS(
    SELECT TOP(@limit) ROW_NUMBER() OVER(ORDER BY(SELECT NULL))
    FROM E4
)
SELECT *, @convertname + '-' + CAST(N AS VARCHAR(10)) 
FROM CteTally
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35169385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档