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_2606200323166725070, LEN(c.CustomerID)) AS CustomerIDStars,
REPLICATE(LEFT(c.CompanyName, @pMAIN_2606200323166725071), @pMAIN_2606200323166725072) AS CompanyNameInitialRepeated,
o.OrderID AS OrderID,
REPLICATE(@pMAIN_2606200323166725073, @pMAIN_2606200323166725074 - 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_2606200323166725075
ORDER BY c.CustomerID ASC;
Parameters (If used)
| Name |
Value |
| @pMAIN_2606200323166725070 |
* |
| @pMAIN_2606200323166725071 |
1 |
| @pMAIN_2606200323166725072 |
5 |
| @pMAIN_2606200323166725073 |
0 |
| @pMAIN_2606200323166725074 |
7 |
| @pMAIN_2606200323166725075 |
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_2606200323166841760, CAST (od.Discount * @pMAIN_2606200323166841761 AS INT)), REPLICATE(@pMAIN_2606200323166841762, @pMAIN_2606200323166841763 - CAST (od.Discount * @pMAIN_2606200323166841764 AS INT))) AS DiscountProgressBar
FROM [Order Details] AS od
ORDER BY od.OrderID ASC, od.ProductID ASC;
Parameters (If used)
| Name |
Value |
| @pMAIN_2606200323166841760 |
# |
| @pMAIN_2606200323166841761 |
20 |
| @pMAIN_2606200323166841762 |
. |
| @pMAIN_2606200323166841763 |
20 |
| @pMAIN_2606200323166841764 |
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_2606200323166901700 AND @pMAIN_2606200323166901701 THEN REPLICATE(@pMAIN_2606200323166901702, @pMAIN_2606200323166901703) WHEN MONTH(OrderDate) BETWEEN @pMAIN_2606200323166901704 AND @pMAIN_2606200323166901705 THEN REPLICATE(@pMAIN_2606200323166901706, @pMAIN_2606200323166901707) WHEN MONTH(OrderDate) BETWEEN @pMAIN_2606200323166901708 AND @pMAIN_2606200323166901709 THEN REPLICATE(@pMAIN_260620032316690170_10, @pMAIN_260620032316690170_11) ELSE REPLICATE(@pMAIN_260620032316690170_12, @pMAIN_260620032316690170_13) END AS MonthlySeparator
FROM Orders
WHERE OrderID BETWEEN @pMAIN_260620032316690170_14 AND @pMAIN_260620032316690170_15
OR OrderID BETWEEN @pMAIN_260620032316690170_16 AND @pMAIN_260620032316690170_17
OR OrderID BETWEEN @pMAIN_260620032316690170_18 AND @pMAIN_260620032316690170_19
OR OrderID BETWEEN @pMAIN_260620032316690170_20 AND @pMAIN_260620032316690170_21
OR OrderID BETWEEN @pMAIN_260620032316690170_22 AND @pMAIN_260620032316690170_23
OR OrderID BETWEEN @pMAIN_260620032316690170_24 AND @pMAIN_260620032316690170_25
OR OrderID BETWEEN @pMAIN_260620032316690170_26 AND @pMAIN_260620032316690170_27
ORDER BY OrderDate ASC;
Parameters (If used)
| Name |
Value |
| @pMAIN_2606200323166901700 |
1 |
| @pMAIN_2606200323166901701 |
3 |
| @pMAIN_2606200323166901702 |
- |
| @pMAIN_2606200323166901703 |
20 |
| @pMAIN_2606200323166901704 |
4 |
| @pMAIN_2606200323166901705 |
6 |
| @pMAIN_2606200323166901706 |
= |
| @pMAIN_2606200323166901707 |
20 |
| @pMAIN_2606200323166901708 |
7 |
| @pMAIN_2606200323166901709 |
9 |
| @pMAIN_260620032316690170_10 |
+ |
| @pMAIN_260620032316690170_11 |
20 |
| @pMAIN_260620032316690170_12 |
* |
| @pMAIN_260620032316690170_13 |
20 |
| @pMAIN_260620032316690170_14 |
10316 |
| @pMAIN_260620032316690170_15 |
10319 |
| @pMAIN_260620032316690170_16 |
10398 |
| @pMAIN_260620032316690170_17 |
10401 |
| @pMAIN_260620032316690170_18 |
10490 |
| @pMAIN_260620032316690170_19 |
10493 |
| @pMAIN_260620032316690170_20 |
10583 |
| @pMAIN_260620032316690170_21 |
10586 |
| @pMAIN_260620032316690170_22 |
10686 |
| @pMAIN_260620032316690170_23 |
10689 |
| @pMAIN_260620032316690170_24 |
10806 |
| @pMAIN_260620032316690170_25 |
10809 |
| @pMAIN_260620032316690170_26 |
10988 |
| @pMAIN_260620032316690170_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
|
====================
|