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_2602032112547043590, @pMAIN_2602032112547043591) AS NormalizedPhoneNumber,
CASE WHEN PATINDEX(@pMAIN_2602032112547043592, TRANSLATE(Phone, @pMAIN_2602032112547043593, @pMAIN_2602032112547043594)) = @pMAIN_2602032112547043595 THEN SUBSTRING(TRANSLATE(Phone, @pMAIN_2602032112547043596, @pMAIN_2602032112547043597), PATINDEX(@pMAIN_2602032112547043598, TRANSLATE(Phone, @pMAIN_2602032112547043599, @pMAIN_260203211254704359_10)), @pMAIN_260203211254704359_11) ELSE NULL END AS ExtractedPhoneNumber
FROM Customers;
Parameters (If used)
| Name |
Value |
| @pMAIN_2602032112547043590 |
()-+. |
| @pMAIN_2602032112547043591 |
______ |
| @pMAIN_2602032112547043592 |
%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]% |
| @pMAIN_2602032112547043593 |
()-+. |
| @pMAIN_2602032112547043594 |
______ |
| @pMAIN_2602032112547043595 |
0 |
| @pMAIN_2602032112547043596 |
()-+. |
| @pMAIN_2602032112547043597 |
______ |
| @pMAIN_2602032112547043598 |
%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]% |
| @pMAIN_2602032112547043599 |
()-+. |
| @pMAIN_260203211254704359_10 |
______ |
| @pMAIN_260203211254704359_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_2602032112547131000, @pMAIN_2602032112547131001) AS MaskedPhoneNumber
FROM Customers;
Parameters (If used)
| Name |
Value |
| @pMAIN_2602032112547131000 |
0123456789 |
| @pMAIN_2602032112547131001 |
********** |
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
|
(***) ***-****
|