Es un error común que para el constructo
b IN (x, y, z)
que (x, y, z)
representa un conjunto. No es asi.
Más bien, es simplemente azúcar sintáctica para
(b = x OR b = y OR b = z)
SQL tiene más que una estructura de datos: la tabla. Si desea consultar valores de texto de búsqueda como un conjunto, colóquelos en una tabla. Puede JOIN
su tabla de texto de búsqueda a su tabla Places
usando LIKE
en la condición JOIN
p.
WITH Places (Name)
AS
(
SELECT Name
FROM (
VALUES ('Ballymeade Country Club'),
('Ballymena Candles'),
('Bangers & Mash Cafe'),
('Bangebis')
) AS Places (Name)
),
SearchText (search_text)
AS
(
SELECT search_text
FROM (
VALUES ('Ballymena'),
('Banger')
) AS SearchText (search_text)
)
SELECT *
FROM Places AS P1
LEFT OUTER JOIN SearchText AS S1
ON P1.Name LIKE S1.search_text + '%';
De hecho podría funcionar, pero el soporte de expresiones regulares no es estándar SQL .. –
¿qué tal si? – Breezer
'similar a' supuestamente se reemplaza con 'regexp_like' en el estándar. Ya veremos. – Donnie