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