Siempre que escribo un procedimiento almacenado para seleccionar datos basado en una variable de cadena (varchar, nvarchar, char) Me gustaría tener algo como:Al igual que frente a "=" para hacer coincidir cadenas utilizando SQL Server
procedure dbo.p_get_user_by_username(
@username nvarchar(256)
as
begin
select
u.username
,u.email
--,etc
from
sampleUserTable u
where
u.username = @username
end
Así que en es decir, para igualar el récord que tendría
u.username = @username
Pero a veces encontrar código que utilizaría LIK E en lugar de =
u.username like(@username)
¿Cuándo utilizarlo? ¿No debería usarse solo cuando necesita una coincidencia de comodín?
EDITAR
Gracias por las respuestas.
Creo que necesito aclarar que lo que realmente estaba tratando de preguntar era: si pudiera haber una situación en la que se prefiriera usar como en lugar de "=" para una coincidencia exacta de cadenas. De las respuestas podría decir que no habría. Desde mi propia experiencia, incluso en situaciones en las que necesito ignorar, por ejemplo, casos y espacios iniciales y finales, usaría ltrim, rtrim, menor en ambas cadenas y luego "=". Gracias de nuevo por tu aportación.
Este código tal como está es realmente arriesgado con una cláusula similar que no se está escapando ... significa que si tiene un nombre de usuario llamado 'bob_dylan' se tratará igual que 'bobXdylan'. necesitas escapar aquí para la cláusula similar. –
Además, si alguien pasa un nombre de usuario de decir '%' forzará un escaneo de tabla en su tabla de usuario Y devolverá todos los usuarios ... –
Gracias, sambo esos son algunos puntos buenos, era consciente del peligro de pasar ' % 'y no estaba familiarizado con el problema de escape anteriormente. Lo que realmente estaba tratando de preguntar es si alguien alguna vez usaría en lugar de "=" para una cadena exacta que coincida con – kristof