Other TRANSLATE SQL function
1. Usage of TRANSLATE to format phone number in various way
SQL Server Query 1
SELECT TOP 10
CustomerID,
ContactName,
Phone,
TRANSLATE(Phone, '()-+. ', '______') AS NormalizedPhoneNumber,
-- Further extraction of numeric parts (requires more complex string manipulation)
CASE
WHEN PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', TRANSLATE(Phone, '()-+. ', '______')) = 0
THEN SUBSTRING(TRANSLATE(Phone, '()-+. ', '______'), PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', TRANSLATE(Phone, '()-+. ', '______')), 10)
-- Add more complex logic for different phone number patterns if needed
ELSE NULL
END AS ExtractedPhoneNumber
FROM
Customers;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select().Top(10)
.Columns("CustomerID", "ContactName", "Phone")
.Column(new TRANSLATE(new Column("Phone"), "()-+. ", "______"), "NormalizedPhoneNumber")
.Column(new CASE()
.When(new PATINDEX("%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%", new TRANSLATE(new Column("Phone"), "()-+. ", "______")).Equale(0))
.Then(new SUBSTRING(new TRANSLATE(new Column("Phone"), "()-+. ", "______"), new PATINDEX("%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%"
, new TRANSLATE(new Column("Phone"), "()-+. ", "______")), 10))
.Else(new Column("NULL")), "ExtractedPhoneNumber")
.From("Customers")
.Build();
Query build by SqlQueryBuilder 1
SELECT TOP 10 CustomerID,
ContactName,
Phone,
TRANSLATE(Phone, @pMAIN_2507192049581369660, @pMAIN_2507192049581369661) AS NormalizedPhoneNumber,
CASE WHEN PATINDEX(@pMAIN_2507192049581369662, TRANSLATE(Phone, @pMAIN_2507192049581369663, @pMAIN_2507192049581369664)) = @pMAIN_2507192049581369665 THEN SUBSTRING(TRANSLATE(Phone, @pMAIN_2507192049581369666, @pMAIN_2507192049581369667), PATINDEX(@pMAIN_2507192049581369668, TRANSLATE(Phone, @pMAIN_2507192049581369669, @pMAIN_250719204958136966_10)), @pMAIN_250719204958136966_11) ELSE NULL END AS ExtractedPhoneNumber
FROM Customers;
Parameters (If used)
Name |
Value |
@pMAIN_2507192049581369660 |
()-+. |
@pMAIN_2507192049581369661 |
______ |
@pMAIN_2507192049581369662 |
%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]% |
@pMAIN_2507192049581369663 |
()-+. |
@pMAIN_2507192049581369664 |
______ |
@pMAIN_2507192049581369665 |
0 |
@pMAIN_2507192049581369666 |
()-+. |
@pMAIN_2507192049581369667 |
______ |
@pMAIN_2507192049581369668 |
%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]% |
@pMAIN_2507192049581369669 |
()-+. |
@pMAIN_250719204958136966_10 |
______ |
@pMAIN_250719204958136966_11 |
10 |
Query Results 1:
|
CustomerID |
ContactName |
Phone |
NormalizedPhoneNumber |
ExtractedPhoneNumber |
1 |
ALFKI
|
Maria Anders
|
030-0074321
|
030_0074321
|
030_00743
|
2 |
ANATR
|
Ana Trujillo
|
(5) 555-4729
|
_5__555_4729
|
_5__555_4
|
3 |
ANTON
|
Antonio Moreno
|
(5) 555-3932
|
_5__555_3932
|
_5__555_3
|
4 |
AROUT
|
Thomas Hardy
|
(171) 555-7788
|
_171__555_7788
|
_171__555
|
5 |
BERGS
|
Christina Berglund
|
0921-12 34 65
|
0921_12_34_65
|
0921_12_3
|
6 |
BLAUS
|
Hanna Moos
|
0621-08460
|
0621_08460
|
0621_0846
|
7 |
BLONP
|
Frédérique Citeaux
|
88.60.15.31
|
88_60_15_31
|
88_60_15_
|
8 |
BOLID
|
Martín Sommer
|
(91) 555 22 82
|
_91__555_22_82
|
_91__555_
|
9 |
BONAP
|
Laurence Lebihan
|
91.24.45.40
|
91_24_45_40
|
91_24_45_
|
10 |
BOTTM
|
Elizabeth Lincoln
|
(604) 555-4729
|
_604__555_4729
|
_604__555
|
2. Usage of TRANSLATE to mask phone number
SQL Server Query 2
SELECT TOP 10
CustomerID,
ContactName,
Phone,
TRANSLATE(Phone, '0123456789', '**********') AS MaskedPhoneNumber
FROM
Customers;
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.Select().Top(10)
.Columns("CustomerID", "ContactName", "Phone")
.Column(new TRANSLATE(new Column("Phone"), "0123456789", "**********"), "MaskedPhoneNumber")
.From("Customers")
.Build();
Query build by SqlQueryBuilder 2
SELECT TOP 10 CustomerID,
ContactName,
Phone,
TRANSLATE(Phone, @pMAIN_2507192049581448180, @pMAIN_2507192049581448181) AS MaskedPhoneNumber
FROM Customers;
Parameters (If used)
Name |
Value |
@pMAIN_2507192049581448180 |
0123456789 |
@pMAIN_2507192049581448181 |
********** |
Query Results 2:
|
CustomerID |
ContactName |
Phone |
MaskedPhoneNumber |
1 |
ALFKI
|
Maria Anders
|
030-0074321
|
***-*******
|
2 |
ANATR
|
Ana Trujillo
|
(5) 555-4729
|
(*) ***-****
|
3 |
ANTON
|
Antonio Moreno
|
(5) 555-3932
|
(*) ***-****
|
4 |
AROUT
|
Thomas Hardy
|
(171) 555-7788
|
(***) ***-****
|
5 |
BERGS
|
Christina Berglund
|
0921-12 34 65
|
****-** ** **
|
6 |
BLAUS
|
Hanna Moos
|
0621-08460
|
****-*****
|
7 |
BLONP
|
Frédérique Citeaux
|
88.60.15.31
|
**.**.**.**
|
8 |
BOLID
|
Martín Sommer
|
(91) 555 22 82
|
(**) *** ** **
|
9 |
BONAP
|
Laurence Lebihan
|
91.24.45.40
|
**.**.**.**
|
10 |
BOTTM
|
Elizabeth Lincoln
|
(604) 555-4729
|
(***) ***-****
|