SUBSTRING SQL function
1. Usage of SUBSTRING to add - in between product name.
SQL Server Query 1
SELECT
ProductName,
-- Basic replacement: Change 'Chef' to 'Cook'
REPLACE(ProductName, 'Chef', 'Cook') AS ReplacedChef,
-- Case-insensitive replacement (more complex using nested REPLACE)
REPLACE(REPLACE(REPLACE(LOWER(ProductName), 'chef', '#TEMP#'), 'cook', 'chef'), '#TEMP#', 'cook') AS ReplacedChefCaseInsensitive,
-- Replacing multiple different substrings
REPLACE(REPLACE(ProductName, 'Sauce', 'Dressing'), 'Syrup', 'Topping') AS ReplacedSauceSyrup,
-- Replacing based on position (more complex using SUBSTRING and concatenation)
CASE
WHEN CHARINDEX(' ', ProductName) > 0 THEN
LEFT(ProductName, CHARINDEX(' ', ProductName) - 1) +
' - Updated' +
SUBSTRING(ProductName, CHARINDEX(' ', ProductName), LEN(ProductName))
ELSE
ProductName + ' - Updated'
END AS ReplacedAfterFirstSpace,
-- Removing specific characters (replacing with empty string)
REPLACE(ProductName, '''', '') AS RemovedApostrophe
FROM
Products
WHERE
ProductName LIKE '%Chef%' OR
ProductName LIKE '%Sauce%' OR
ProductName LIKE '%Syrup%' OR
ProductName LIKE '% %' OR
ProductName LIKE '%''%';
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select()
.Column("ProductName", "ProductName")
.Column(new REPLACE(new Column("ProductName"), "Chef", "Cook"), "ReplacedChef")
.Column(new REPLACE(new REPLACE(new REPLACE(new LOWER(new Column("ProductName")), "chef", "#TEMP#"), "cook", "chef"), "#TEMP#", "cook"), "ReplacedChefCaseInsensitive")
.Column(new REPLACE(new REPLACE(new Column("ProductName"), "Sauce", "Dressing"), "Syrup", "Topping"), "ReplacedSauceSyrup")
.Column(new CASE()
.When(new CHARINDEX(" ", new Column("ProductName")).GreaterThan(0))
.Then(new CONCAT(
new LEFT(new Column("ProductName"), new CHARINDEX(" ", new Column("ProductName")).AddArithmatic(new Arithmatic().Subtract(1))),
" - Updated",
new SUBSTRING(new Column("ProductName"), new CHARINDEX(" ", new Column("ProductName")), new LEN(new Column("ProductName")))
))
.Else(new CONCAT(new Column("ProductName"), " - Updated"))
, "ReplacedAfterFirstSpace")
.Column(new REPLACE(new Column("ProductName"), "'", ""), "RemovedApostrophe")
.From("Products")
.Where(new Where(new LIKE(new Column("ProductName"), "%Chef%"))
.OR(new LIKE(new Column("ProductName"), "%Sauce%"))
.OR(new LIKE(new Column("ProductName"), "%Syrup%"))
.OR(new LIKE(new Column("ProductName"), "% %"))
.OR(new LIKE(new Column("ProductName"), "%''%"))
)
.Build();
Query build by SqlQueryBuilder 1
SELECT ProductName AS ProductName,
REPLACE(ProductName, @pMAIN_2507192019007391020, @pMAIN_2507192019007391021) AS ReplacedChef,
REPLACE(REPLACE(REPLACE(LOWER(ProductName), @pMAIN_2507192019007391022, @pMAIN_2507192019007391023), @pMAIN_2507192019007391024, @pMAIN_2507192019007391025), @pMAIN_2507192019007391026, @pMAIN_2507192019007391027) AS ReplacedChefCaseInsensitive,
REPLACE(REPLACE(ProductName, @pMAIN_2507192019007391028, @pMAIN_2507192019007391029), @pMAIN_250719201900739102_10, @pMAIN_250719201900739102_11) AS ReplacedSauceSyrup,
CASE WHEN CHARINDEX(@pMAIN_250719201900739102_12, ProductName, 1) > @pMAIN_250719201900739102_13 THEN CONCAT(LEFT(ProductName, CHARINDEX(@pMAIN_250719201900739102_14, ProductName, 1) - @pMAIN_250719201900739102_15), @pMAIN_250719201900739102_16, SUBSTRING(ProductName, CHARINDEX(@pMAIN_250719201900739102_17, ProductName, 1), LEN(ProductName))) ELSE CONCAT(ProductName, @pMAIN_250719201900739102_18) END AS ReplacedAfterFirstSpace,
REPLACE(ProductName, @pMAIN_250719201900739102_19, @pMAIN_250719201900739102_20) AS RemovedApostrophe
FROM Products
WHERE ProductName LIKE @pMAIN_250719201900739102_21
OR ProductName LIKE @pMAIN_250719201900739102_22
OR ProductName LIKE @pMAIN_250719201900739102_23
OR ProductName LIKE @pMAIN_250719201900739102_24
OR ProductName LIKE @pMAIN_250719201900739102_25;
Parameters (If used)
Name |
Value |
@pMAIN_2507192019007391020 |
Chef |
@pMAIN_2507192019007391021 |
Cook |
@pMAIN_2507192019007391022 |
chef |
@pMAIN_2507192019007391023 |
#TEMP# |
@pMAIN_2507192019007391024 |
cook |
@pMAIN_2507192019007391025 |
chef |
@pMAIN_2507192019007391026 |
#TEMP# |
@pMAIN_2507192019007391027 |
cook |
@pMAIN_2507192019007391028 |
Sauce |
@pMAIN_2507192019007391029 |
Dressing |
@pMAIN_250719201900739102_10 |
Syrup |
@pMAIN_250719201900739102_11 |
Topping |
@pMAIN_250719201900739102_12 |
|
@pMAIN_250719201900739102_13 |
0 |
@pMAIN_250719201900739102_14 |
|
@pMAIN_250719201900739102_15 |
1 |
@pMAIN_250719201900739102_16 |
- Updated |
@pMAIN_250719201900739102_17 |
|
@pMAIN_250719201900739102_18 |
- Updated |
@pMAIN_250719201900739102_19 |
' |
@pMAIN_250719201900739102_20 |
|
@pMAIN_250719201900739102_21 |
%Chef% |
@pMAIN_250719201900739102_22 |
%Sauce% |
@pMAIN_250719201900739102_23 |
%Syrup% |
@pMAIN_250719201900739102_24 |
% % |
@pMAIN_250719201900739102_25 |
%''% |
Query Results 1:
|
ProductName |
ReplacedChef |
ReplacedChefCaseInsensitive |
ReplacedSauceSyrup |
ReplacedAfterFirstSpace |
RemovedApostrophe |
1 |
Alice Mutton
|
Alice Mutton
|
alice mutton
|
Alice Mutton
|
Alice - Updated Mutton
|
Alice Mutton
|
2 |
Aniseed Syrup
|
Aniseed Syrup
|
aniseed syrup
|
Aniseed Topping
|
Aniseed - Updated Syrup
|
Aniseed Syrup
|
3 |
Boston Crab Meat
|
Boston Crab Meat
|
boston crab meat
|
Boston Crab Meat
|
Boston - Updated Crab Meat
|
Boston Crab Meat
|
4 |
Camembert Pierrot
|
Camembert Pierrot
|
camembert pierrot
|
Camembert Pierrot
|
Camembert - Updated Pierrot
|
Camembert Pierrot
|
5 |
Carnarvon Tigers
|
Carnarvon Tigers
|
carnarvon tigers
|
Carnarvon Tigers
|
Carnarvon - Updated Tigers
|
Carnarvon Tigers
|
6 |
Chartreuse verte
|
Chartreuse verte
|
chartreuse verte
|
Chartreuse verte
|
Chartreuse - Updated verte
|
Chartreuse verte
|
7 |
Chef Anton's Cajun Seasoning
|
Cook Anton's Cajun Seasoning
|
cook anton's cajun seasoning
|
Chef Anton's Cajun Seasoning
|
Chef - Updated Anton's Cajun Seasoning
|
Chef Antons Cajun Seasoning
|
8 |
Chef Anton's Gumbo Mix
|
Cook Anton's Gumbo Mix
|
cook anton's gumbo mix
|
Chef Anton's Gumbo Mix
|
Chef - Updated Anton's Gumbo Mix
|
Chef Antons Gumbo Mix
|
9 |
Côte de Blaye
|
Côte de Blaye
|
côte de blaye
|
Côte de Blaye
|
Côte - Updated de Blaye
|
Côte de Blaye
|
10 |
Escargots de Bourgogne
|
Escargots de Bourgogne
|
escargots de bourgogne
|
Escargots de Bourgogne
|
Escargots - Updated de Bourgogne
|
Escargots de Bourgogne
|
11 |
Filo Mix
|
Filo Mix
|
filo mix
|
Filo Mix
|
Filo - Updated Mix
|
Filo Mix
|
12 |
Genen Shouyu
|
Genen Shouyu
|
genen shouyu
|
Genen Shouyu
|
Genen - Updated Shouyu
|
Genen Shouyu
|
13 |
Gnocchi di nonna Alice
|
Gnocchi di nonna Alice
|
gnocchi di nonna alice
|
Gnocchi di nonna Alice
|
Gnocchi - Updated di nonna Alice
|
Gnocchi di nonna Alice
|
14 |
Gorgonzola Telino
|
Gorgonzola Telino
|
gorgonzola telino
|
Gorgonzola Telino
|
Gorgonzola - Updated Telino
|
Gorgonzola Telino
|
15 |
Grandma's Boysenberry Spread
|
Grandma's Boysenberry Spread
|
grandma's boysenberry spread
|
Grandma's Boysenberry Spread
|
Grandma's - Updated Boysenberry Spread
|
Grandmas Boysenberry Spread
|
16 |
Gravad lax
|
Gravad lax
|
gravad lax
|
Gravad lax
|
Gravad - Updated lax
|
Gravad lax
|
17 |
Guaraná Fantástica
|
Guaraná Fantástica
|
guaraná fantástica
|
Guaraná Fantástica
|
Guaraná - Updated Fantástica
|
Guaraná Fantástica
|
18 |
Gula Malacca
|
Gula Malacca
|
gula malacca
|
Gula Malacca
|
Gula - Updated Malacca
|
Gula Malacca
|
19 |
Gumbär Gummibärchen
|
Gumbär Gummibärchen
|
gumbär gummibärchen
|
Gumbär Gummibärchen
|
Gumbär - Updated Gummibärchen
|
Gumbär Gummibärchen
|
20 |
Gustaf's Knäckebröd
|
Gustaf's Knäckebröd
|
gustaf's knäckebröd
|
Gustaf's Knäckebröd
|
Gustaf's - Updated Knäckebröd
|
Gustafs Knäckebröd
|
21 |
Inlagd Sill
|
Inlagd Sill
|
inlagd sill
|
Inlagd Sill
|
Inlagd - Updated Sill
|
Inlagd Sill
|
22 |
Ipoh Coffee
|
Ipoh Coffee
|
ipoh coffee
|
Ipoh Coffee
|
Ipoh - Updated Coffee
|
Ipoh Coffee
|
23 |
Jack's New England Clam Chowder
|
Jack's New England Clam Chowder
|
jack's new england clam chowder
|
Jack's New England Clam Chowder
|
Jack's - Updated New England Clam Chowder
|
Jacks New England Clam Chowder
|
24 |
Laughing Lumberjack Lager
|
Laughing Lumberjack Lager
|
laughing lumberjack lager
|
Laughing Lumberjack Lager
|
Laughing - Updated Lumberjack Lager
|
Laughing Lumberjack Lager
|
25 |
Longlife Tofu
|
Longlife Tofu
|
longlife tofu
|
Longlife Tofu
|
Longlife - Updated Tofu
|
Longlife Tofu
|
26 |
Louisiana Fiery Hot Pepper Sauce
|
Louisiana Fiery Hot Pepper Sauce
|
louisiana fiery hot pepper sauce
|
Louisiana Fiery Hot Pepper Dressing
|
Louisiana - Updated Fiery Hot Pepper Sauce
|
Louisiana Fiery Hot Pepper Sauce
|
27 |
Louisiana Hot Spiced Okra
|
Louisiana Hot Spiced Okra
|
louisiana hot spiced okra
|
Louisiana Hot Spiced Okra
|
Louisiana - Updated Hot Spiced Okra
|
Louisiana Hot Spiced Okra
|
28 |
Manjimup Dried Apples
|
Manjimup Dried Apples
|
manjimup dried apples
|
Manjimup Dried Apples
|
Manjimup - Updated Dried Apples
|
Manjimup Dried Apples
|
29 |
Mascarpone Fabioli
|
Mascarpone Fabioli
|
mascarpone fabioli
|
Mascarpone Fabioli
|
Mascarpone - Updated Fabioli
|
Mascarpone Fabioli
|
30 |
Mishi Kobe Niku
|
Mishi Kobe Niku
|
mishi kobe niku
|
Mishi Kobe Niku
|
Mishi - Updated Kobe Niku
|
Mishi Kobe Niku
|
31 |
Mozzarella di Giovanni
|
Mozzarella di Giovanni
|
mozzarella di giovanni
|
Mozzarella di Giovanni
|
Mozzarella - Updated di Giovanni
|
Mozzarella di Giovanni
|
32 |
Nord-Ost Matjeshering
|
Nord-Ost Matjeshering
|
nord-ost matjeshering
|
Nord-Ost Matjeshering
|
Nord-Ost - Updated Matjeshering
|
Nord-Ost Matjeshering
|
33 |
Northwoods Cranberry Sauce
|
Northwoods Cranberry Sauce
|
northwoods cranberry sauce
|
Northwoods Cranberry Dressing
|
Northwoods - Updated Cranberry Sauce
|
Northwoods Cranberry Sauce
|
34 |
NuNuCa Nuß-Nougat-Creme
|
NuNuCa Nuß-Nougat-Creme
|
nunuca nuß-nougat-creme
|
NuNuCa Nuß-Nougat-Creme
|
NuNuCa - Updated Nuß-Nougat-Creme
|
NuNuCa Nuß-Nougat-Creme
|
35 |
Original Frankfurter grüne Soße
|
Original Frankfurter grüne Soße
|
original frankfurter grüne soße
|
Original Frankfurter grüne Soße
|
Original - Updated Frankfurter grüne Soße
|
Original Frankfurter grüne Soße
|
36 |
Outback Lager
|
Outback Lager
|
outback lager
|
Outback Lager
|
Outback - Updated Lager
|
Outback Lager
|
37 |
Pâté chinois
|
Pâté chinois
|
pâté chinois
|
Pâté chinois
|
Pâté - Updated chinois
|
Pâté chinois
|
38 |
Perth Pasties
|
Perth Pasties
|
perth pasties
|
Perth Pasties
|
Perth - Updated Pasties
|
Perth Pasties
|
39 |
Queso Cabrales
|
Queso Cabrales
|
queso cabrales
|
Queso Cabrales
|
Queso - Updated Cabrales
|
Queso Cabrales
|
40 |
Queso Manchego La Pastora
|
Queso Manchego La Pastora
|
queso manchego la pastora
|
Queso Manchego La Pastora
|
Queso - Updated Manchego La Pastora
|
Queso Manchego La Pastora
|
41 |
Raclette Courdavault
|
Raclette Courdavault
|
raclette courdavault
|
Raclette Courdavault
|
Raclette - Updated Courdavault
|
Raclette Courdavault
|
42 |
Ravioli Angelo
|
Ravioli Angelo
|
ravioli angelo
|
Ravioli Angelo
|
Ravioli - Updated Angelo
|
Ravioli Angelo
|
43 |
Rhönbräu Klosterbier
|
Rhönbräu Klosterbier
|
rhönbräu klosterbier
|
Rhönbräu Klosterbier
|
Rhönbräu - Updated Klosterbier
|
Rhönbräu Klosterbier
|
44 |
Röd Kaviar
|
Röd Kaviar
|
röd kaviar
|
Röd Kaviar
|
Röd - Updated Kaviar
|
Röd Kaviar
|
45 |
Rogede sild
|
Rogede sild
|
rogede sild
|
Rogede sild
|
Rogede - Updated sild
|
Rogede sild
|
46 |
Rössle Sauerkraut
|
Rössle Sauerkraut
|
rössle sauerkraut
|
Rössle Sauerkraut
|
Rössle - Updated Sauerkraut
|
Rössle Sauerkraut
|
47 |
Sasquatch Ale
|
Sasquatch Ale
|
sasquatch ale
|
Sasquatch Ale
|
Sasquatch - Updated Ale
|
Sasquatch Ale
|
48 |
Schoggi Schokolade
|
Schoggi Schokolade
|
schoggi schokolade
|
Schoggi Schokolade
|
Schoggi - Updated Schokolade
|
Schoggi Schokolade
|
49 |
Scottish Longbreads
|
Scottish Longbreads
|
scottish longbreads
|
Scottish Longbreads
|
Scottish - Updated Longbreads
|
Scottish Longbreads
|
50 |
Singaporean Hokkien Fried Mee
|
Singaporean Hokkien Fried Mee
|
singaporean hokkien fried mee
|
Singaporean Hokkien Fried Mee
|
Singaporean - Updated Hokkien Fried Mee
|
Singaporean Hokkien Fried Mee
|
51 |
Sir Rodney's Marmalade
|
Sir Rodney's Marmalade
|
sir rodney's marmalade
|
Sir Rodney's Marmalade
|
Sir - Updated Rodney's Marmalade
|
Sir Rodneys Marmalade
|
52 |
Sir Rodney's Scones
|
Sir Rodney's Scones
|
sir rodney's scones
|
Sir Rodney's Scones
|
Sir - Updated Rodney's Scones
|
Sir Rodneys Scones
|
53 |
Sirop d'érable
|
Sirop d'érable
|
sirop d'érable
|
Sirop d'érable
|
Sirop - Updated d'érable
|
Sirop dérable
|
54 |
Steeleye Stout
|
Steeleye Stout
|
steeleye stout
|
Steeleye Stout
|
Steeleye - Updated Stout
|
Steeleye Stout
|
55 |
Tarte au sucre
|
Tarte au sucre
|
tarte au sucre
|
Tarte au sucre
|
Tarte - Updated au sucre
|
Tarte au sucre
|
56 |
Teatime Chocolate Biscuits
|
Teatime Chocolate Biscuits
|
teatime chocolate biscuits
|
Teatime Chocolate Biscuits
|
Teatime - Updated Chocolate Biscuits
|
Teatime Chocolate Biscuits
|
57 |
Thüringer Rostbratwurst
|
Thüringer Rostbratwurst
|
thüringer rostbratwurst
|
Thüringer Rostbratwurst
|
Thüringer - Updated Rostbratwurst
|
Thüringer Rostbratwurst
|
58 |
Uncle Bob's Organic Dried Pears
|
Uncle Bob's Organic Dried Pears
|
uncle bob's organic dried pears
|
Uncle Bob's Organic Dried Pears
|
Uncle - Updated Bob's Organic Dried Pears
|
Uncle Bobs Organic Dried Pears
|
59 |
Valkoinen suklaa
|
Valkoinen suklaa
|
valkoinen suklaa
|
Valkoinen suklaa
|
Valkoinen - Updated suklaa
|
Valkoinen suklaa
|
60 |
Wimmers gute Semmelknödel
|
Wimmers gute Semmelknödel
|
wimmers gute semmelknödel
|
Wimmers gute Semmelknödel
|
Wimmers - Updated gute Semmelknödel
|
Wimmers gute Semmelknödel
|
61 |
Zaanse koeken
|
Zaanse koeken
|
zaanse koeken
|
Zaanse koeken
|
Zaanse - Updated koeken
|
Zaanse koeken
|
2. Usage of SUBSTRING to mask company name.
SQL Server Query 2
SELECT
c.CustomerID,
c.CompanyName,
REVERSE(c.CompanyName) AS ReversedCompanyName,
SUBSTRING(c.CompanyName, 1, 1) + REPLICATE('*', LEN(c.CompanyName) - 2) +
CASE WHEN LEN(c.CompanyName) > 1 THEN REVERSE(SUBSTRING(REVERSE(c.CompanyName), 1, 1)) ELSE '' END AS FirstLastReversedMasked,
o.OrderID,
REVERSE(CAST(o.OrderID AS VARCHAR)) AS ReversedOrderID
FROM
Customers c
LEFT JOIN
Orders o ON c.CustomerID = o.CustomerID
WHERE
LEN(c.CompanyName) > 3 AND (o.OrderID BETWEEN 10316 AND 10319 OR o.OrderID BETWEEN 10398 AND 10401 OR
o.OrderID BETWEEN 10490 AND 10493 OR o.OrderID BETWEEN 10583 AND 10586 OR
o.OrderID BETWEEN 10686 AND 10689 OR o.OrderID BETWEEN 10806 AND 10809 OR
o.OrderID BETWEEN 10988 AND 10991)
ORDER BY
c.CustomerID;
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.Select()
.Column("c.CustomerID", "CustomerID")
.Column("c.CompanyName", "CompanyName")
.Column(new REVERSE(new Column("c.CompanyName")), "ReversedCompanyName")
.Column(new CONCAT(
new SUBSTRING(new Column("c.CompanyName"), 1, 1),
new REPLICATE("*", new LEN(new Column("c.CompanyName")).AddArithmatic(new Arithmatic().Subtract(2))),
new CASE()
.When(new LEN(new Column("c.CompanyName")).GreaterThan(1))
.Then(new REVERSE(new SUBSTRING(new REVERSE(new Column("c.CompanyName")), 1, 1)))
.Else("")
), "FirstLastReversedMasked")
.Column("o.OrderID", "OrderID")
.Column(new REVERSE(new CAST(new Column("o.OrderID"), SqlDataType.VARCHAR)), "ReversedOrderID")
.From("Customers", "c")
.Join(new List<IJoin>()
{
new LEFTJOIN().TableName(new Table("Orders","o"))
.On(new Column("c.CustomerID").Equale(new Column("o.CustomerID")))
})
.Where(new Where(new LEN(new Column("c.CompanyName")).GreaterThan(3))
.AND().StartBracket().Compare(new BETWEEN(new Column("o.OrderID"), "10316", "10319"))
.OR(new BETWEEN(new Column("o.OrderID"), "10398", "10401"))
.OR(new BETWEEN(new Column("o.OrderID"), "10490", "10493"))
.OR(new BETWEEN(new Column("o.OrderID"), "10583", "10586"))
.OR(new BETWEEN(new Column("o.OrderID"), "10686", "10689"))
.OR(new BETWEEN(new Column("o.OrderID"), "10806", "10809"))
.OR(new BETWEEN(new Column("o.OrderID"), "10988", "10991"))
.EndBracket()
)
.OrderBy(new OrderBy().SetColumnAscending("c.CustomerID"))
.Build();
Query build by SqlQueryBuilder 2
SELECT c.CustomerID AS CustomerID,
c.CompanyName AS CompanyName,
REVERSE(c.CompanyName) AS ReversedCompanyName,
CONCAT(SUBSTRING(c.CompanyName, @pMAIN_2507192019007451820, @pMAIN_2507192019007451821), REPLICATE(@pMAIN_2507192019007451822, LEN(c.CompanyName) - @pMAIN_2507192019007451823), CASE WHEN LEN(c.CompanyName) > @pMAIN_2507192019007451824 THEN REVERSE(SUBSTRING(REVERSE(c.CompanyName), @pMAIN_2507192019007451825, @pMAIN_2507192019007451826)) ELSE @pMAIN_2507192019007451827 END) AS FirstLastReversedMasked,
o.OrderID AS OrderID,
REVERSE(CAST (o.OrderID AS VARCHAR)) AS ReversedOrderID
FROM Customers AS c
LEFT OUTER JOIN
Orders AS o
ON c.CustomerID = o.CustomerID
WHERE LEN(c.CompanyName) > @pMAIN_2507192019007451828
AND (o.OrderID BETWEEN @pMAIN_2507192019007451829 AND @pMAIN_250719201900745182_10
OR o.OrderID BETWEEN @pMAIN_250719201900745182_11 AND @pMAIN_250719201900745182_12
OR o.OrderID BETWEEN @pMAIN_250719201900745182_13 AND @pMAIN_250719201900745182_14
OR o.OrderID BETWEEN @pMAIN_250719201900745182_15 AND @pMAIN_250719201900745182_16
OR o.OrderID BETWEEN @pMAIN_250719201900745182_17 AND @pMAIN_250719201900745182_18
OR o.OrderID BETWEEN @pMAIN_250719201900745182_19 AND @pMAIN_250719201900745182_20
OR o.OrderID BETWEEN @pMAIN_250719201900745182_21 AND @pMAIN_250719201900745182_22)
ORDER BY c.CustomerID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192019007451820 |
1 |
@pMAIN_2507192019007451821 |
1 |
@pMAIN_2507192019007451822 |
* |
@pMAIN_2507192019007451823 |
2 |
@pMAIN_2507192019007451824 |
1 |
@pMAIN_2507192019007451825 |
1 |
@pMAIN_2507192019007451826 |
1 |
@pMAIN_2507192019007451827 |
|
@pMAIN_2507192019007451828 |
3 |
@pMAIN_2507192019007451829 |
10316 |
@pMAIN_250719201900745182_10 |
10319 |
@pMAIN_250719201900745182_11 |
10398 |
@pMAIN_250719201900745182_12 |
10401 |
@pMAIN_250719201900745182_13 |
10490 |
@pMAIN_250719201900745182_14 |
10493 |
@pMAIN_250719201900745182_15 |
10583 |
@pMAIN_250719201900745182_16 |
10586 |
@pMAIN_250719201900745182_17 |
10686 |
@pMAIN_250719201900745182_18 |
10689 |
@pMAIN_250719201900745182_19 |
10806 |
@pMAIN_250719201900745182_20 |
10809 |
@pMAIN_250719201900745182_21 |
10988 |
@pMAIN_250719201900745182_22 |
10991 |
Query Results 2:
|
CustomerID |
CompanyName |
OrderID |
ReversedCompanyName |
FirstLastReversedMasked |
ReversedOrderID |
1 |
BERGS
|
Berglunds snabbköp
|
10689
|
pökbbans sdnulgreB
|
B****************p
|
98601
|
2 |
BLONP
|
Blondesddsl père et fils
|
10584
|
slif te erèp lsddsednolB
|
B**********************s
|
48501
|
3 |
BOTTM
|
Bottom-Dollar Markets
|
10492
|
stekraM ralloD-mottoB
|
B*******************s
|
29401
|
4 |
EASTC
|
Eastern Connection
|
10400
|
noitcennoC nretsaE
|
E****************n
|
00401
|
5 |
ERNSH
|
Ernst Handel
|
10990
|
lednaH tsnrE
|
E**********l
|
09901
|
6 |
FRANS
|
Franchi S.p.A.
|
10807
|
.A.p.S ihcnarF
|
F************.
|
70801
|
7 |
FURIB
|
Furia Bacalhau e Frutos do Mar
|
10491
|
raM od soturF e uahlacaB airuF
|
F****************************r
|
19401
|
8 |
HILAA
|
HILARION-Abastos
|
10490
|
sotsabA-NOIRALIH
|
H**************s
|
09401
|
9 |
HUNGO
|
Hungry Owl All-Night Grocers
|
10687
|
srecorG thgiN-llA lwO yrgnuH
|
H**************************s
|
78601
|
10 |
ISLAT
|
Island Trading
|
10318
|
gnidarT dnalsI
|
I************g
|
81301
|
11 |
LAMAI
|
La maison d'Asie
|
10493
|
eisA'd nosiam aL
|
L**************e
|
39401
|
12 |
LONEP
|
Lonesome Pine Restaurant
|
10317
|
tnaruatseR eniP emosenoL
|
L**********************t
|
71301
|
13 |
OLDWO
|
Old World Delicatessen
|
10808
|
nessetacileD dlroW dlO
|
O********************n
|
80801
|
14 |
PICCO
|
Piccolo und mehr
|
10686
|
rhem dnu olocciP
|
P**************r
|
68601
|
15 |
QUEDE
|
Que Delícia
|
10989
|
aicíleD euQ
|
Q*********a
|
98901
|
16 |
QUICK
|
QUICK-Stop
|
10991
|
potS-KCIUQ
|
Q********p
|
19901
|
17 |
RATTC
|
Rattlesnake Canyon Grocery
|
10316
|
yrecorG noynaC ekanselttaR
|
R************************y
|
61301
|
18 |
RATTC
|
Rattlesnake Canyon Grocery
|
10401
|
yrecorG noynaC ekanselttaR
|
R************************y
|
10401
|
19 |
RATTC
|
Rattlesnake Canyon Grocery
|
10988
|
yrecorG noynaC ekanselttaR
|
R************************y
|
88901
|
20 |
REGGC
|
Reggiani Caseifici
|
10586
|
icifiesaC inaiggeR
|
R****************i
|
68501
|
21 |
SAVEA
|
Save-a-lot Markets
|
10398
|
stekraM tol-a-evaS
|
S****************s
|
89301
|
22 |
TORTU
|
Tortuga Restaurante
|
10319
|
etnaruatseR agutroT
|
T*****************e
|
91301
|
23 |
VAFFE
|
Vaffeljernet
|
10399
|
tenrejleffaV
|
V**********t
|
99301
|
24 |
VAFFE
|
Vaffeljernet
|
10688
|
tenrejleffaV
|
V**********t
|
88601
|
25 |
VICTE
|
Victuailles en stock
|
10806
|
kcots ne selliautciV
|
V******************k
|
60801
|
26 |
WARTH
|
Wartian Herkku
|
10583
|
ukkreH naitraW
|
W************u
|
38501
|
27 |
WELLI
|
Wellington Importadora
|
10585
|
arodatropmI notgnilleW
|
W********************a
|
58501
|
28 |
WELLI
|
Wellington Importadora
|
10809
|
arodatropmI notgnilleW
|
W********************a
|
90801
|
3. Usage of SUBSTRING to make customer id encoded.
SQL Server Query 3
SELECT TOP 15
CustomerID,
SUBSTRING(CustomerID, 1, 1) +
CASE SUBSTRING(CustomerID, 2, 1)
WHEN 'L' THEN NCHAR(0x214C) -- Script L
WHEN 'F' THEN NCHAR(0x191) -- Latin Capital Letter F with Hook
WHEN 'K' THEN NCHAR(0x212A) -- Kelvin Sign
ELSE SUBSTRING(CustomerID, 2, 1)
END +
SUBSTRING(CustomerID, 3, 5) AS EncodedCustomerID
FROM
Customers;
Create SQL query with SqlQueryBuilder 3
var (sql3, parameters3) = new SqlQueryBuilder()
.Select().Top(15)
.Column("CustomerID", "CustomerID")
.Column(new CONCAT(
new SUBSTRING(new Column("CustomerID"), 1, 1),
new CASE(new SUBSTRING(new Column("CustomerID"), 2, 1))
.When("L").Then(new NCHAR(0x214C))
.When("F").Then(new NCHAR(0x191))
.When("K").Then(new NCHAR(0x212A))
.Else(new SUBSTRING(new Column("CustomerID"), 2, 1)),
new SUBSTRING(new Column("CustomerID"), 3, 5)
), "EncodedCustomerID")
.From("Customers")
.Build();
Query build by SqlQueryBuilder 3
SELECT TOP 15 CustomerID AS CustomerID,
CONCAT(SUBSTRING(CustomerID, @pMAIN_2507192019007653220, @pMAIN_2507192019007653221), CASE SUBSTRING(CustomerID, @pMAIN_2507192019007653222, @pMAIN_2507192019007653223) WHEN @pMAIN_2507192019007653224 THEN NCHAR(8524) WHEN @pMAIN_2507192019007653225 THEN NCHAR(401) WHEN @pMAIN_2507192019007653226 THEN NCHAR(8490) ELSE SUBSTRING(CustomerID, @pMAIN_2507192019007653227, @pMAIN_2507192019007653228) END, SUBSTRING(CustomerID, @pMAIN_2507192019007653229, @pMAIN_250719201900765322_10)) AS EncodedCustomerID
FROM Customers;
Parameters (If used)
Name |
Value |
@pMAIN_2507192019007653220 |
1 |
@pMAIN_2507192019007653221 |
1 |
@pMAIN_2507192019007653222 |
2 |
@pMAIN_2507192019007653223 |
1 |
@pMAIN_2507192019007653224 |
L |
@pMAIN_2507192019007653225 |
F |
@pMAIN_2507192019007653226 |
K |
@pMAIN_2507192019007653227 |
2 |
@pMAIN_2507192019007653228 |
1 |
@pMAIN_2507192019007653229 |
3 |
@pMAIN_250719201900765322_10 |
5 |
Query Results 3:
|
CustomerID |
EncodedCustomerID |
1 |
ALFKI
|
A⅌FKI
|
2 |
ANATR
|
ANATR
|
3 |
ANTON
|
ANTON
|
4 |
AROUT
|
AROUT
|
5 |
BERGS
|
BERGS
|
6 |
BLAUS
|
B⅌AUS
|
7 |
BLONP
|
B⅌ONP
|
8 |
BOLID
|
BOLID
|
9 |
BONAP
|
BONAP
|
10 |
BSBEV
|
BSBEV
|
11 |
CACTU
|
CACTU
|
12 |
CENTC
|
CENTC
|
13 |
CHOPS
|
CHOPS
|
14 |
CONSH
|
CONSH
|
15 |
DRACD
|
DRACD
|
4. Usage of SUBSTRING to extract first character of second word from company name.
SQL Server Query 4
SELECT CustomerID, CompanyName,
SUBSTRING(CompanyName, 1, CHARINDEX(' ', CompanyName) - 1) AS FirstWord
FROM Customers
WHERE CHARINDEX(' ', CompanyName) > 0; -- Only show companies with at least one space
Create SQL query with SqlQueryBuilder 4
var (sql4, parameters4) = new SqlQueryBuilder()
.Select().Columns("CustomerID", "CompanyName")
.Column(new SUBSTRING(new Column("CompanyName"), 1, new CHARINDEX(" ", new Column("CompanyName"), 1).AddArithmatic(new Arithmatic().Subtract(-1))), "FirstWord")
.From("Customers")
.Where(new Where(new CHARINDEX(" ", new Column("CompanyName")).GreaterThan(0)))
.Build();
Query build by SqlQueryBuilder 4
SELECT CustomerID,
CompanyName,
SUBSTRING(CompanyName, @pMAIN_2507192019007699530, CHARINDEX(@pMAIN_2507192019007699531, CompanyName, 1) - @pMAIN_2507192019007699532) AS FirstWord
FROM Customers
WHERE CHARINDEX(@pMAIN_2507192019007699533, CompanyName, 1) > @pMAIN_2507192019007699534;
Parameters (If used)
Name |
Value |
@pMAIN_2507192019007699530 |
1 |
@pMAIN_2507192019007699531 |
|
@pMAIN_2507192019007699532 |
-1 |
@pMAIN_2507192019007699533 |
|
@pMAIN_2507192019007699534 |
0 |
Query Results 4:
|
CustomerID |
CompanyName |
FirstWord |
1 |
ALFKI
|
Alfreds Futterkiste
|
Alfreds F
|
2 |
ANATR
|
Ana Trujillo Emparedados y helados
|
Ana T
|
3 |
ANTON
|
Antonio Moreno Taquería
|
Antonio M
|
4 |
AROUT
|
Around the Horn
|
Around t
|
5 |
BERGS
|
Berglunds snabbköp
|
Berglunds s
|
6 |
BLAUS
|
Blauer See Delikatessen
|
Blauer S
|
7 |
BLONP
|
Blondesddsl père et fils
|
Blondesddsl p
|
8 |
BOLID
|
Bólido Comidas preparadas
|
Bólido C
|
9 |
BONAP
|
Bon app'
|
Bon a
|
10 |
BOTTM
|
Bottom-Dollar Markets
|
Bottom-Dollar M
|
11 |
BSBEV
|
B's Beverages
|
B's B
|
12 |
CACTU
|
Cactus Comidas para llevar
|
Cactus C
|
13 |
CENTC
|
Centro comercial Moctezuma
|
Centro c
|
14 |
CHOPS
|
Chop-suey Chinese
|
Chop-suey C
|
15 |
COMMI
|
Comércio Mineiro
|
Comércio M
|
16 |
CONSH
|
Consolidated Holdings
|
Consolidated H
|
17 |
WANDK
|
Die Wandernde Kuh
|
Die W
|
18 |
DRACD
|
Drachenblut Delikatessen
|
Drachenblut D
|
19 |
DUMON
|
Du monde entier
|
Du m
|
20 |
EASTC
|
Eastern Connection
|
Eastern C
|
21 |
ERNSH
|
Ernst Handel
|
Ernst H
|
22 |
FAMIA
|
Familia Arquibaldo
|
Familia A
|
23 |
FISSA
|
FISSA Fabrica Inter. Salchichas S.A.
|
FISSA F
|
24 |
FOLIG
|
Folies gourmandes
|
Folies g
|
25 |
FOLKO
|
Folk och fä HB
|
Folk o
|
26 |
FRANR
|
France restauration
|
France r
|
27 |
FRANS
|
Franchi S.p.A.
|
Franchi S
|
28 |
FURIB
|
Furia Bacalhau e Frutos do Mar
|
Furia B
|
29 |
GALED
|
Galería del gastrónomo
|
Galería d
|
30 |
GODOS
|
Godos Cocina Típica
|
Godos C
|
31 |
GOURL
|
Gourmet Lanchonetes
|
Gourmet L
|
32 |
GREAL
|
Great Lakes Food Market
|
Great L
|
33 |
HANAR
|
Hanari Carnes
|
Hanari C
|
34 |
HUNGC
|
Hungry Coyote Import Store
|
Hungry C
|
35 |
HUNGO
|
Hungry Owl All-Night Grocers
|
Hungry O
|
36 |
ISLAT
|
Island Trading
|
Island T
|
37 |
KOENE
|
Königlich Essen
|
Königlich E
|
38 |
LACOR
|
La corne d'abondance
|
La c
|
39 |
LAMAI
|
La maison d'Asie
|
La m
|
40 |
LAUGB
|
Laughing Bacchus Wine Cellars
|
Laughing B
|
41 |
LAZYK
|
Lazy K Kountry Store
|
Lazy K
|
42 |
LEHMS
|
Lehmanns Marktstand
|
Lehmanns M
|
43 |
LETSS
|
Let's Stop N Shop
|
Let's S
|
44 |
LONEP
|
Lonesome Pine Restaurant
|
Lonesome P
|
45 |
MAGAA
|
Magazzini Alimentari Riuniti
|
Magazzini A
|
46 |
MAISD
|
Maison Dewey
|
Maison D
|
47 |
MEREP
|
Mère Paillarde
|
Mère P
|
48 |
MORGK
|
Morgenstern Gesundkost
|
Morgenstern G
|
49 |
OCEAN
|
Océano Atlántico Ltda.
|
Océano A
|
50 |
OLDWO
|
Old World Delicatessen
|
Old W
|
51 |
OTTIK
|
Ottilies Käseladen
|
Ottilies K
|
52 |
PARIS
|
Paris spécialités
|
Paris s
|
53 |
PERIC
|
Pericles Comidas clásicas
|
Pericles C
|
54 |
PICCO
|
Piccolo und mehr
|
Piccolo u
|
55 |
PRINI
|
Princesa Isabel Vinhos
|
Princesa I
|
56 |
QUEDE
|
Que Delícia
|
Que D
|
57 |
QUEEN
|
Queen Cozinha
|
Queen C
|
58 |
RANCH
|
Rancho grande
|
Rancho g
|
59 |
RATTC
|
Rattlesnake Canyon Grocery
|
Rattlesnake C
|
60 |
REGGC
|
Reggiani Caseifici
|
Reggiani C
|
61 |
RICAR
|
Ricardo Adocicados
|
Ricardo A
|
62 |
RICSU
|
Richter Supermarkt
|
Richter S
|
63 |
ROMEY
|
Romero y tomillo
|
Romero y
|
64 |
SANTG
|
Santé Gourmet
|
Santé G
|
65 |
SAVEA
|
Save-a-lot Markets
|
Save-a-lot M
|
66 |
SEVES
|
Seven Seas Imports
|
Seven S
|
67 |
SIMOB
|
Simons bistro
|
Simons b
|
68 |
SPECD
|
Spécialités du monde
|
Spécialités d
|
69 |
SPLIR
|
Split Rail Beer & Ale
|
Split R
|
70 |
SUPRD
|
Suprêmes délices
|
Suprêmes d
|
71 |
THEBI
|
The Big Cheese
|
The B
|
72 |
THECR
|
The Cracker Box
|
The C
|
73 |
TOMSP
|
Toms Spezialitäten
|
Toms S
|
74 |
TORTU
|
Tortuga Restaurante
|
Tortuga R
|
75 |
TRADH
|
Tradição Hipermercados
|
Tradição H
|
76 |
TRAIH
|
Trail's Head Gourmet Provisioners
|
Trail's H
|
77 |
VICTE
|
Victuailles en stock
|
Victuailles e
|
78 |
VINET
|
Vins et alcools Chevalier
|
Vins e
|
79 |
WARTH
|
Wartian Herkku
|
Wartian H
|
80 |
WELLI
|
Wellington Importadora
|
Wellington I
|
81 |
WHITC
|
White Clover Markets
|
White C
|
82 |
WILMK
|
Wilman Kala
|
Wilman K
|
83 |
WOLZA
|
Wolski Zajazd
|
Wolski
|
5. Usage of SUBSTRING to make partial OrderID and utilize in join.
SQL Server Query 5
WITH CustomerPhoneSuffix AS (
SELECT
CustomerID,
CompanyName,
Phone,
-- Extract the last 4 digits of the phone number
RIGHT(Phone, 4) AS LastFourDigits
FROM
Customers
WHERE
LEN(Phone) >= 4
),
CustomerWithFaxSuffix AS (
SELECT
CustomerID,
CompanyName,
Fax,
-- Extract the last 3 digits of the fax number if it exists
CASE
WHEN Fax IS NOT NULL AND LEN(Fax) >= 3 THEN RIGHT(Fax, 3)
ELSE NULL
END AS LastThreeFaxDigits
FROM
Customers
),
OrderDetailsWithUnitPriceSuffix AS (
SELECT
od.OrderID,
p.ProductName,
od.UnitPrice,
-- Extract the last digit of the UnitPrice
RIGHT(CAST(FLOOR(od.UnitPrice) AS VARCHAR), 1) AS UnitPriceLastDigit
FROM
[Order Details] od
JOIN
Products p ON od.ProductID = p.ProductID
)
SELECT
c.CustomerID,
c.CompanyName,
cps.LastFourDigits AS PhoneLastFour,
cfx.LastThreeFaxDigits AS FaxLastThree,
oud.OrderID,
oud.ProductName,
oud.UnitPrice,
oud.UnitPriceLastDigit
FROM
Customers c
LEFT JOIN
CustomerPhoneSuffix cps ON c.CustomerID = cps.CustomerID
LEFT JOIN
CustomerWithFaxSuffix cfx ON c.CustomerID = cfx.CustomerID
LEFT JOIN
OrderDetailsWithUnitPriceSuffix oud ON c.CustomerID = SUBSTRING(CAST(oud.OrderID AS VARCHAR), 1, 5) -- Attempting a join based on partial OrderID (illustrative, might not be logically sound)
WHERE
cps.LastFourDigits IS NOT NULL OR cfx.LastThreeFaxDigits IS NOT NULL OR oud.UnitPriceLastDigit IS NOT NULL
ORDER BY
c.CustomerID;
Create SQL query with SqlQueryBuilder 5
var (sql5, parameters5) = new SqlQueryBuilder()
.WithCTETable(new Table("CustomerPhoneSuffix"), new SqlQueryBuilder()
.Select()
.Columns("CustomerID", "CompanyName", "Phone")
.Column(new RIGHT(new Column("Phone"), 4), "LastFourDigits")
.From("Customers")
.Where(new Where(new LEN(new Column("Phone")).GreaterThanOrEqualeTo(4)))
)
.WithCTETable(new Table("CustomerWithFaxSuffix"), new SqlQueryBuilder()
.Select()
.Columns("CustomerID", "CompanyName", "Fax")
.Column(new CASE()
.When(new IS_NOT_NULL(new Column("Fax")).AND(new LEN(new Column("FAX")).GreaterThanOrEqualeTo(3)))
.Then(new RIGHT(new Column("Fax"), 3))
.Else(new Column().SetNull())
, "LastThreeFaxDigits")
.From("Customers")
)
.WithCTETable(new Table("OrderDetailsWithUnitPriceSuffix"), new SqlQueryBuilder()
.Select()
.Columns("od.OrderID", "p.ProductName", "od.UnitPrice")
.Column(new RIGHT(new CAST(new FLOOR(new Column("od.UnitPrice")), SqlDataType.VARBINARY), 1), "UnitPriceLastDigit")
.From("[Order Details]", "od")
.Join(new List<IJoin>() {
new Join(SQLJoin.INNERJOIN).TableName(new Table("Products","p"))
.On(new Column("od.ProductID"), SQLComparisonOperators.EQUALE_TO, new Column("p.ProductID"))
})
)
.Select()
.Columns("c.CustomerID", "c.CompanyName")
.Column("cps.LastFourDigits", "PhoneLastFour")
.Column("cfx.LastThreeFaxDigits", "FaxLastThree")
.Columns("oud.OrderID", "oud.ProductName", "oud.UnitPrice", "oud.UnitPriceLastDigit")
.From("Customers", "c")
.Join(new List<IJoin>()
{
new LEFTJOIN().TableName(new Table("CustomerPhoneSuffix","cps"))
.On(new Column("c.CustomerID"), SQLComparisonOperators.EQUALE_TO, new Column("cps.CustomerID")),
new LEFTJOIN().TableName(new Table("CustomerWithFaxSuffix","cfx"))
.On(new Column("c.CustomerID"), SQLComparisonOperators.EQUALE_TO, new Column("cfx.CustomerID")),
new LEFTJOIN().TableName(new Table("OrderDetailsWithUnitPriceSuffix","oud"))
.On(new Column("c.CustomerID"), SQLComparisonOperators.EQUALE_TO, new SUBSTRING(new CAST(new Column("oud.OrderID"), SqlDataType.VARCHAR),1,5))
})
.Where(new Where(new IS_NOT_NULL(new Column("cps.LastFourDigits")))
.OR(new IS_NOT_NULL(new Column("cfx.LastThreeFaxDigits")))
.OR(new IS_NOT_NULL(new Column("oud.UnitPriceLastDigit")))
)
.OrderBy(new OrderBy().Set(new Column("c.CustomerID")))
.Build();
Query build by SqlQueryBuilder 5
WITH CustomerPhoneSuffix
AS (SELECT CustomerID,
CompanyName,
Phone,
RIGHT(Phone, @pMAIN_2507192019007747060) AS LastFourDigits
FROM Customers
WHERE LEN(Phone) >= @pMAIN_2507192019007747061),
CustomerWithFaxSuffix
AS (SELECT CustomerID,
CompanyName,
Fax,
CASE WHEN Fax IS NOT NULL
AND LEN(FAX) >= @pMAIN_2507192019007747062 THEN RIGHT(Fax, @pMAIN_2507192019007747063) ELSE NULL END AS LastThreeFaxDigits
FROM Customers),
OrderDetailsWithUnitPriceSuffix
AS (SELECT od.OrderID,
p.ProductName,
od.UnitPrice,
RIGHT(CAST (FLOOR(od.UnitPrice) AS VARBINARY), @pMAIN_2507192019007747064) AS UnitPriceLastDigit
FROM [Order Details] AS od
INNER JOIN
Products AS p
ON od.ProductID = p.ProductID)
SELECT c.CustomerID,
c.CompanyName,
cps.LastFourDigits AS PhoneLastFour,
cfx.LastThreeFaxDigits AS FaxLastThree,
oud.OrderID,
oud.ProductName,
oud.UnitPrice,
oud.UnitPriceLastDigit
FROM Customers AS c
LEFT OUTER JOIN
CustomerPhoneSuffix AS cps
ON c.CustomerID = cps.CustomerID
LEFT OUTER JOIN
CustomerWithFaxSuffix AS cfx
ON c.CustomerID = cfx.CustomerID
LEFT OUTER JOIN
OrderDetailsWithUnitPriceSuffix AS oud
ON c.CustomerID = SUBSTRING(CAST (oud.OrderID AS VARCHAR), @pMAIN_2507192019007747065, @pMAIN_2507192019007747066)
WHERE cps.LastFourDigits IS NOT NULL
OR cfx.LastThreeFaxDigits IS NOT NULL
OR oud.UnitPriceLastDigit IS NOT NULL
ORDER BY c.CustomerID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192019007747060 |
4 |
@pMAIN_2507192019007747061 |
4 |
@pMAIN_2507192019007747062 |
3 |
@pMAIN_2507192019007747063 |
3 |
@pMAIN_2507192019007747064 |
1 |
@pMAIN_2507192019007747065 |
1 |
@pMAIN_2507192019007747066 |
5 |
Query Results 5:
|
CustomerID |
CompanyName |
PhoneLastFour |
FaxLastThree |
OrderID |
UnitPriceLastDigit |
1 |
ALFKI
|
Alfreds Futterkiste
|
4321
|
545
|
0
|
|
2 |
ANATR
|
Ana Trujillo Emparedados y helados
|
4729
|
745
|
0
|
|
3 |
ANTON
|
Antonio Moreno Taquería
|
3932
|
|
0
|
|
4 |
AROUT
|
Around the Horn
|
7788
|
750
|
0
|
|
5 |
BERGS
|
Berglunds snabbköp
|
4 65
|
67
|
0
|
|
6 |
BLAUS
|
Blauer See Delikatessen
|
8460
|
924
|
0
|
|
7 |
BLONP
|
Blondesddsl père et fils
|
5.31
|
.32
|
0
|
|
8 |
BOLID
|
Bólido Comidas preparadas
|
2 82
|
99
|
0
|
|
9 |
BONAP
|
Bon app'
|
5.40
|
.41
|
0
|
|
10 |
BOTTM
|
Bottom-Dollar Markets
|
4729
|
745
|
0
|
|
11 |
BSBEV
|
B's Beverages
|
1212
|
|
0
|
|
12 |
CACTU
|
Cactus Comidas para llevar
|
5555
|
892
|
0
|
|
13 |
CENTC
|
Centro comercial Moctezuma
|
3392
|
293
|
0
|
|
14 |
CHOPS
|
Chop-suey Chinese
|
6545
|
|
0
|
|
15 |
COMMI
|
Comércio Mineiro
|
7647
|
|
0
|
|
16 |
CONSH
|
Consolidated Holdings
|
2282
|
199
|
0
|
|
17 |
DRACD
|
Drachenblut Delikatessen
|
9123
|
428
|
0
|
|
18 |
DUMON
|
Du monde entier
|
8.88
|
.89
|
0
|
|
19 |
EASTC
|
Eastern Connection
|
0297
|
373
|
0
|
|
20 |
ERNSH
|
Ernst Handel
|
3425
|
426
|
0
|
|
21 |
FAMIA
|
Familia Arquibaldo
|
9857
|
|
0
|
|
22 |
FISSA
|
FISSA Fabrica Inter. Salchichas S.A.
|
4 44
|
93
|
0
|
|
23 |
FOLIG
|
Folies gourmandes
|
0.16
|
.17
|
0
|
|
24 |
FOLKO
|
Folk och fä HB
|
7 21
|
|
0
|
|
25 |
FRANK
|
Frankenversand
|
7310
|
451
|
0
|
|
26 |
FRANR
|
France restauration
|
1.21
|
.20
|
0
|
|
27 |
FRANS
|
Franchi S.p.A.
|
8260
|
261
|
0
|
|
28 |
FURIB
|
Furia Bacalhau e Frutos do Mar
|
2534
|
535
|
0
|
|
29 |
GALED
|
Galería del gastrónomo
|
4560
|
561
|
0
|
|
30 |
GODOS
|
Godos Cocina Típica
|
2 82
|
|
0
|
|
31 |
GOURL
|
Gourmet Lanchonetes
|
9482
|
|
0
|
|
32 |
GREAL
|
Great Lakes Food Market
|
7555
|
|
0
|
|
33 |
GROSR
|
GROSELLA-Restaurante
|
2951
|
397
|
0
|
|
34 |
HANAR
|
Hanari Carnes
|
0091
|
765
|
0
|
|
35 |
HILAA
|
HILARION-Abastos
|
1340
|
948
|
0
|
|
36 |
HUNGC
|
Hungry Coyote Import Store
|
6874
|
376
|
0
|
|
37 |
HUNGO
|
Hungry Owl All-Night Grocers
|
542
|
333
|
0
|
|
38 |
ISLAT
|
Island Trading
|
8888
|
|
0
|
|
39 |
KOENE
|
Königlich Essen
|
9876
|
|
0
|
|
40 |
LACOR
|
La corne d'abondance
|
4.10
|
.11
|
0
|
|
41 |
LAMAI
|
La maison d'Asie
|
1.10
|
.11
|
0
|
|
42 |
LAUGB
|
Laughing Bacchus Wine Cellars
|
3392
|
293
|
0
|
|
43 |
LAZYK
|
Lazy K Kountry Store
|
7969
|
221
|
0
|
|
44 |
LEHMS
|
Lehmanns Marktstand
|
5984
|
874
|
0
|
|
45 |
LETSS
|
Let's Stop N Shop
|
5938
|
|
0
|
|
46 |
LILAS
|
LILA-Supermercado
|
6954
|
256
|
0
|
|
47 |
LINOD
|
LINO-Delicateses
|
6-12
|
-93
|
0
|
|
48 |
LONEP
|
Lonesome Pine Restaurant
|
9573
|
646
|
0
|
|
49 |
MAGAA
|
Magazzini Alimentari Riuniti
|
0230
|
231
|
0
|
|
50 |
MAISD
|
Maison Dewey
|
4 67
|
68
|
0
|
|
51 |
MEREP
|
Mère Paillarde
|
8054
|
055
|
0
|
|
52 |
MORGK
|
Morgenstern Gesundkost
|
3176
|
|
0
|
|
53 |
NORTS
|
North/South
|
7733
|
530
|
0
|
|
54 |
OCEAN
|
Océano Atlántico Ltda.
|
5333
|
535
|
0
|
|
55 |
OLDWO
|
Old World Delicatessen
|
7584
|
880
|
0
|
|
56 |
OTTIK
|
Ottilies Käseladen
|
4327
|
721
|
0
|
|
57 |
PARIS
|
Paris spécialités
|
2.66
|
.77
|
0
|
|
58 |
PERIC
|
Pericles Comidas clásicas
|
3745
|
745
|
0
|
|
59 |
PICCO
|
Piccolo und mehr
|
9722
|
723
|
0
|
|
60 |
PRINI
|
Princesa Isabel Vinhos
|
5634
|
|
0
|
|
61 |
QUEDE
|
Que Delícia
|
4252
|
545
|
0
|
|
62 |
QUEEN
|
Queen Cozinha
|
1189
|
|
0
|
|
63 |
QUICK
|
QUICK-Stop
|
5188
|
|
0
|
|
64 |
RANCH
|
Rancho grande
|
5555
|
556
|
0
|
|
65 |
RATTC
|
Rattlesnake Canyon Grocery
|
5939
|
620
|
0
|
|
66 |
REGGC
|
Reggiani Caseifici
|
6721
|
722
|
0
|
|
67 |
RICAR
|
Ricardo Adocicados
|
3412
|
|
0
|
|
68 |
RICSU
|
Richter Supermarkt
|
4214
|
|
0
|
|
69 |
ROMEY
|
Romero y tomillo
|
6200
|
210
|
0
|
|
70 |
SANTG
|
Santé Gourmet
|
2 35
|
47
|
0
|
|
71 |
SAVEA
|
Save-a-lot Markets
|
8097
|
|
0
|
|
72 |
SEVES
|
Seven Seas Imports
|
1717
|
646
|
0
|
|
73 |
SIMOB
|
Simons bistro
|
4 56
|
57
|
0
|
|
74 |
SPECD
|
Spécialités du monde
|
0.10
|
.20
|
0
|
|
75 |
SPLIR
|
Split Rail Beer & Ale
|
4680
|
525
|
0
|
|
76 |
SUPRD
|
Suprêmes délices
|
2 20
|
21
|
0
|
|
77 |
THEBI
|
The Big Cheese
|
3612
|
|
0
|
|
78 |
THECR
|
The Cracker Box
|
5834
|
083
|
0
|
|
79 |
TOMSP
|
Toms Spezialitäten
|
1259
|
695
|
0
|
|
80 |
TORTU
|
Tortuga Restaurante
|
2933
|
|
0
|
|
81 |
TRADH
|
Tradição Hipermercados
|
2167
|
168
|
0
|
|
82 |
TRAIH
|
Trail's Head Gourmet Provisioners
|
8257
|
174
|
0
|
|
83 |
VAFFE
|
Vaffeljernet
|
2 43
|
44
|
0
|
|
84 |
VICTE
|
Victuailles en stock
|
4.86
|
.87
|
0
|
|
85 |
VINET
|
Vins et alcools Chevalier
|
5.10
|
.11
|
0
|
|
86 |
WANDK
|
Die Wandernde Kuh
|
0361
|
428
|
0
|
|
87 |
WARTH
|
Wartian Herkku
|
3655
|
655
|
0
|
|
88 |
WELLI
|
Wellington Importadora
|
8122
|
|
0
|
|
89 |
WHITC
|
White Clover Markets
|
4112
|
115
|
0
|
|
90 |
WILMK
|
Wilman Kala
|
8858
|
858
|
0
|
|
91 |
WOLZA
|
Wolski Zajazd
|
7012
|
012
|
0
|
|