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_2512060919172643050, @pMAIN_2512060919172643051) AS NormalizedPhoneNumber,
CASE WHEN PATINDEX(@pMAIN_2512060919172643052, TRANSLATE(Phone, @pMAIN_2512060919172643053, @pMAIN_2512060919172643054)) = @pMAIN_2512060919172643055 THEN SUBSTRING(TRANSLATE(Phone, @pMAIN_2512060919172643056, @pMAIN_2512060919172643057), PATINDEX(@pMAIN_2512060919172643058, TRANSLATE(Phone, @pMAIN_2512060919172643059, @pMAIN_251206091917264305_10)), @pMAIN_251206091917264305_11) ELSE NULL END AS ExtractedPhoneNumber
FROM Customers;
Parameters (If used)
| Name |
Value |
| @pMAIN_2512060919172643050 |
()-+. |
| @pMAIN_2512060919172643051 |
______ |
| @pMAIN_2512060919172643052 |
%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]% |
| @pMAIN_2512060919172643053 |
()-+. |
| @pMAIN_2512060919172643054 |
______ |
| @pMAIN_2512060919172643055 |
0 |
| @pMAIN_2512060919172643056 |
()-+. |
| @pMAIN_2512060919172643057 |
______ |
| @pMAIN_2512060919172643058 |
%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]% |
| @pMAIN_2512060919172643059 |
()-+. |
| @pMAIN_251206091917264305_10 |
______ |
| @pMAIN_251206091917264305_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_2512060919172709120, @pMAIN_2512060919172709121) AS MaskedPhoneNumber
FROM Customers;
Parameters (If used)
| Name |
Value |
| @pMAIN_2512060919172709120 |
0123456789 |
| @pMAIN_2512060919172709121 |
********** |
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
|
(***) ***-****
|