Other REPLICATE SQL function


1. Usage of REPLICATE

SQL Server Query 1

            
 SELECT TOP 15  
c.CustomerID,
c.CompanyName,
REPLICATE('*', LEN(c.CustomerID)) AS CustomerIDStars,
REPLICATE(LEFT(c.CompanyName, 1), 5) AS CompanyNameInitialRepeated,
o.OrderID,
REPLICATE('0', 7 - LEN(CAST(o.OrderID AS VARCHAR))) + CAST(o.OrderID AS VARCHAR) AS OrderIDPaddedWithZeros
FROM
Customers c
LEFT JOIN
Orders o ON c.CustomerID = o.CustomerID
WHERE
LEN(c.CustomerID) > 3
ORDER BY
c.CustomerID;

Create SQL query with SqlQueryBuilder 1

            
 var (sql1, parameters1) = new SqlQueryBuilder()  
.Select().Top(15)
.Column("c.CustomerID", "CustomerID")
.Column("c.CompanyName", "CompanyName")
.Column(new REPLICATE("*", new LEN(new Column("c.CustomerID"))), "CustomerIDStars")
.Column(new REPLICATE(new LEFT(new Column("c.CompanyName"), 1), 5), "CompanyNameInitialRepeated")
.Column("o.OrderID", "OrderID")
.Column(
new REPLICATE("0", new ColumnArithmatic().Value(7).SUBTRACT().SqlFunction(new LEN(new CAST(new Column("o.OrderID"), SqlDataType.VARCHAR))))
.AddArithmatic(new Arithmatic().Add(new CAST(new Column("o.OrderID"), SqlDataType.VARCHAR)))
, "OrderIDPaddedWithZeros")
.From("Customers", "c")
.Join(new List<IJoin>()
{
new LEFTJOIN().TableName(new Table("Orders", "o"))
.On(new Column("c.CustomerID").Equale(new Column("o.CustomerID")))
})
.Where(new Where(new LEN(new Column("c.CustomerID")).GreaterThan(3)))
.OrderBy(new OrderBy().SetColumnAscending("c.CustomerID"))
.Build();

Query build by SqlQueryBuilder 1

            
SELECT TOP 15 c.CustomerID AS CustomerID,
              c.CompanyName AS CompanyName,
              REPLICATE(@pMAIN_2507200210130149870, LEN(c.CustomerID)) AS CustomerIDStars,
              REPLICATE(LEFT(c.CompanyName, @pMAIN_2507200210130149871), @pMAIN_2507200210130149872) AS CompanyNameInitialRepeated,
              o.OrderID AS OrderID,
              REPLICATE(@pMAIN_2507200210130149873, @pMAIN_2507200210130149874 - LEN(CAST (o.OrderID AS VARCHAR))) + CAST (o.OrderID AS VARCHAR) AS OrderIDPaddedWithZeros
FROM Customers AS c
     LEFT OUTER JOIN
     Orders AS o
     ON c.CustomerID = o.CustomerID
WHERE LEN(c.CustomerID) > @pMAIN_2507200210130149875
ORDER BY c.CustomerID ASC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507200210130149870 *
@pMAIN_2507200210130149871 1
@pMAIN_2507200210130149872 5
@pMAIN_2507200210130149873 0
@pMAIN_2507200210130149874 7
@pMAIN_2507200210130149875 3

Query Results 1:

  CustomerID CompanyName CustomerIDStars CompanyNameInitialRepeated OrderIDPaddedWithZeros OrderID
1 ALFKI Alfreds Futterkiste ***** AAAAA 0010643 10643
2 ALFKI Alfreds Futterkiste ***** AAAAA 0010692 10692
3 ALFKI Alfreds Futterkiste ***** AAAAA 0010702 10702
4 ALFKI Alfreds Futterkiste ***** AAAAA 0010835 10835
5 ALFKI Alfreds Futterkiste ***** AAAAA 0010952 10952
6 ALFKI Alfreds Futterkiste ***** AAAAA 0011011 11011
7 ANATR Ana Trujillo Emparedados y helados ***** AAAAA 0010308 10308
8 ANATR Ana Trujillo Emparedados y helados ***** AAAAA 0010625 10625
9 ANATR Ana Trujillo Emparedados y helados ***** AAAAA 0010759 10759
10 ANATR Ana Trujillo Emparedados y helados ***** AAAAA 0010926 10926
11 ANTON Antonio Moreno Taquería ***** AAAAA 0010365 10365
12 ANTON Antonio Moreno Taquería ***** AAAAA 0010507 10507
13 ANTON Antonio Moreno Taquería ***** AAAAA 0010535 10535
14 ANTON Antonio Moreno Taquería ***** AAAAA 0010573 10573
15 ANTON Antonio Moreno Taquería ***** AAAAA 0010677 10677


2. Usage of REPLICATE

SQL Server Query 2

            
 SELECT TOP 10   
od.OrderID, od.ProductID, od.Discount,
CONCAT(REPLICATE('#', CAST(od.Discount * 20 AS INT)),
REPLICATE('.', 20 - CAST(od.Discount * 20 AS INT))) AS DiscountProgressBar
FROM [Order Details] od
ORDER BY od.OrderID ASC,od.ProductID ASC

Create SQL query with SqlQueryBuilder 2

            
 var (sql2, parameters2) = new SqlQueryBuilder()  
.Select().Top(10)
.Columns("od.OrderID", "od.ProductID", "od.Discount")
.Column(new CONCAT(
new REPLICATE("#", new CAST(new ColumnArithmatic().Column("od.Discount").MULTIPLY().Value(20), SqlDataType.INT)),
new REPLICATE(".", new ColumnArithmatic().Value(20).SUBTRACT().SqlFunction(new CAST(new ColumnArithmatic().Column("od.Discount").MULTIPLY().Value(20), SqlDataType.INT)))
)
, "DiscountProgressBar")
.From("[Order Details]", "od")
.OrderBy(new OrderBy().SetColumnAscending("od.OrderID").SetColumnAscending("od.ProductID"))
.Build();

Query build by SqlQueryBuilder 2

            
SELECT TOP 10 od.OrderID,
              od.ProductID,
              od.Discount,
              CONCAT(REPLICATE(@pMAIN_2507200210130218730, CAST (od.Discount * @pMAIN_2507200210130218731 AS INT)), REPLICATE(@pMAIN_2507200210130218732, @pMAIN_2507200210130218733 - CAST (od.Discount * @pMAIN_2507200210130218734 AS INT))) AS DiscountProgressBar
FROM [Order Details] AS od
ORDER BY od.OrderID ASC, od.ProductID ASC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507200210130218730 #
@pMAIN_2507200210130218731 20
@pMAIN_2507200210130218732 .
@pMAIN_2507200210130218733 20
@pMAIN_2507200210130218734 20

Query Results 2:

  OrderID ProductID Discount DiscountProgressBar
1 10248 11 0 ....................
2 10248 42 0 ....................
3 10248 72 0 ....................
4 10249 14 0 ....................
5 10249 51 0 ....................
6 10250 41 0 ....................
7 10250 51 0.15 ###.................
8 10250 65 0.15 ###.................
9 10251 22 0.05 #...................
10 10251 57 0.05 #...................


3. Usage of REPLICATE

SQL Server Query 3

            
 SELECT   
OrderID,
OrderDate,
CASE
WHEN MONTH(OrderDate) BETWEEN 1 AND 3 THEN REPLICATE('-', 20)
WHEN MONTH(OrderDate) BETWEEN 4 AND 6 THEN REPLICATE('=', 20)
WHEN MONTH(OrderDate) BETWEEN 7 AND 9 THEN REPLICATE('+', 20)
ELSE REPLICATE('*', 20)
END AS MonthlySeparator
FROM
Orders
WHERE OrderID BETWEEN 10316 AND 10319 OR OrderID BETWEEN 10398 AND 10401 OR
OrderID BETWEEN 10490 AND 10493 OR OrderID BETWEEN 10583 AND 10586 OR
OrderID BETWEEN 10686 AND 10689 OR OrderID BETWEEN 10806 AND 10809 OR
OrderID BETWEEN 10988 AND 10991
ORDER BY
OrderDate;

Create SQL query with SqlQueryBuilder 3

            
 var (sql3, parameters3) = new SqlQueryBuilder()  
.Select()
.Columns("OrderID", "OrderDate")
.Column(new CASE()
.When(new BETWEEN(new MONTH(new Column("OrderDate")), 1, 3))
.Then(new REPLICATE("-", 20))
.When(new BETWEEN(new MONTH(new Column("OrderDate")), 4, 6))
.Then(new REPLICATE("=", 20))
.When(new BETWEEN(new MONTH(new Column("OrderDate")), 7, 9))
.Then(new REPLICATE("+", 20))
.Else(new REPLICATE("*", 20))
, "MonthlySeparator")
.From("Orders")
.Where(new Where(new BETWEEN(new Column("OrderID"), 10316, 10319))
.OR(new BETWEEN(new Column("OrderID"), 10398, 10401))
.OR(new BETWEEN(new Column("OrderID"), 10490, 10493))
.OR(new BETWEEN(new Column("OrderID"), 10583, 10586))
.OR(new BETWEEN(new Column("OrderID"), 10686, 10689))
.OR(new BETWEEN(new Column("OrderID"), 10806, 10809))
.OR(new BETWEEN(new Column("OrderID"), 10988, 10991))
)
.OrderBy(new OrderBy().SetColumnAscending("OrderDate"))
.Build();

Query build by SqlQueryBuilder 3

            
SELECT OrderID,
       OrderDate,
       CASE WHEN MONTH(OrderDate) BETWEEN @pMAIN_2507200210130254430 AND @pMAIN_2507200210130254431 THEN REPLICATE(@pMAIN_2507200210130254432, @pMAIN_2507200210130254433) WHEN MONTH(OrderDate) BETWEEN @pMAIN_2507200210130254434 AND @pMAIN_2507200210130254435 THEN REPLICATE(@pMAIN_2507200210130254436, @pMAIN_2507200210130254437) WHEN MONTH(OrderDate) BETWEEN @pMAIN_2507200210130254438 AND @pMAIN_2507200210130254439 THEN REPLICATE(@pMAIN_250720021013025443_10, @pMAIN_250720021013025443_11) ELSE REPLICATE(@pMAIN_250720021013025443_12, @pMAIN_250720021013025443_13) END AS MonthlySeparator
FROM Orders
WHERE OrderID BETWEEN @pMAIN_250720021013025443_14 AND @pMAIN_250720021013025443_15
      OR OrderID BETWEEN @pMAIN_250720021013025443_16 AND @pMAIN_250720021013025443_17
      OR OrderID BETWEEN @pMAIN_250720021013025443_18 AND @pMAIN_250720021013025443_19
      OR OrderID BETWEEN @pMAIN_250720021013025443_20 AND @pMAIN_250720021013025443_21
      OR OrderID BETWEEN @pMAIN_250720021013025443_22 AND @pMAIN_250720021013025443_23
      OR OrderID BETWEEN @pMAIN_250720021013025443_24 AND @pMAIN_250720021013025443_25
      OR OrderID BETWEEN @pMAIN_250720021013025443_26 AND @pMAIN_250720021013025443_27
ORDER BY OrderDate ASC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507200210130254430 1
@pMAIN_2507200210130254431 3
@pMAIN_2507200210130254432 -
@pMAIN_2507200210130254433 20
@pMAIN_2507200210130254434 4
@pMAIN_2507200210130254435 6
@pMAIN_2507200210130254436 =
@pMAIN_2507200210130254437 20
@pMAIN_2507200210130254438 7
@pMAIN_2507200210130254439 9
@pMAIN_250720021013025443_10 +
@pMAIN_250720021013025443_11 20
@pMAIN_250720021013025443_12 *
@pMAIN_250720021013025443_13 20
@pMAIN_250720021013025443_14 10316
@pMAIN_250720021013025443_15 10319
@pMAIN_250720021013025443_16 10398
@pMAIN_250720021013025443_17 10401
@pMAIN_250720021013025443_18 10490
@pMAIN_250720021013025443_19 10493
@pMAIN_250720021013025443_20 10583
@pMAIN_250720021013025443_21 10586
@pMAIN_250720021013025443_22 10686
@pMAIN_250720021013025443_23 10689
@pMAIN_250720021013025443_24 10806
@pMAIN_250720021013025443_25 10809
@pMAIN_250720021013025443_26 10988
@pMAIN_250720021013025443_27 10991

Query Results 3:

  OrderID OrderDate MonthlySeparator
1 10316 9/27/1996 12:00:00 AM ++++++++++++++++++++
2 10317 9/30/1996 12:00:00 AM ++++++++++++++++++++
3 10318 10/1/1996 12:00:00 AM ********************
4 10319 10/2/1996 12:00:00 AM ********************
5 10398 12/30/1996 12:00:00 AM ********************
6 10399 12/31/1996 12:00:00 AM ********************
7 10400 1/1/1997 12:00:00 AM --------------------
8 10401 1/1/1997 12:00:00 AM --------------------
9 10490 3/31/1997 12:00:00 AM --------------------
10 10491 3/31/1997 12:00:00 AM --------------------
11 10492 4/1/1997 12:00:00 AM ====================
12 10493 4/2/1997 12:00:00 AM ====================
13 10583 6/30/1997 12:00:00 AM ====================
14 10584 6/30/1997 12:00:00 AM ====================
15 10585 7/1/1997 12:00:00 AM ++++++++++++++++++++
16 10586 7/2/1997 12:00:00 AM ++++++++++++++++++++
17 10686 9/30/1997 12:00:00 AM ++++++++++++++++++++
18 10687 9/30/1997 12:00:00 AM ++++++++++++++++++++
19 10688 10/1/1997 12:00:00 AM ********************
20 10689 10/1/1997 12:00:00 AM ********************
21 10806 12/31/1997 12:00:00 AM ********************
22 10807 12/31/1997 12:00:00 AM ********************
23 10808 1/1/1998 12:00:00 AM --------------------
24 10809 1/1/1998 12:00:00 AM --------------------
25 10988 3/31/1998 12:00:00 AM --------------------
26 10989 3/31/1998 12:00:00 AM --------------------
27 10990 4/1/1998 12:00:00 AM ====================
28 10991 4/1/1998 12:00:00 AM ====================