Issue in String Concation in Sql

Issue in String Concation in Sql

i am concatenate string with int variable to string in sql for that i have write

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

this result me like

    abc-1
    abc-1-2
    abc-1-2-3
    abc-1-2-3-4

but i want result like

abc-1
abc-2
abc-3
abc-4

what to change in my string concatenation logic?

i am new to sql please guide me.

5

3 Answers

this will help you

DECLARE @i  int = 1;
DECLARE @val nvarchar(99) = 'abc';
While(@i<= 5)
BEGIN
   PRINT @val + '-'+ cast(@i AS VARCHAR)
   SET @i=@i+1;
END
6

Would something like this work for you?:

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

You were intending to use @Convertname inside the WHILE loop as a constant, but you were concatenating it instead during each iteration. Using a separate variable for display purposes avoids this problem.

3

You can do this without looping. Here is one method using a Tally Table:

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
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett
Author

Chloe Bennett

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.