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 (***) ***-****