Actualmente tengo la consulta se ejecuta en Postgres:¿Por qué mi consulta con LIKE '% _' devuelve todas las filas y no solo las que terminan en un guión bajo?
SELECT * FROM addenda.users WHERE users.username LIKE '%\_'
Pero en lugar de devolver sólo entradas que termina en un guión, me sale todos los resultados de nuevo, independientemente de si contiene un guión o no.
Ejecutar la consulta siguiente devuelve un nombre de usuario que está a sólo un guión bajo, por lo que el escapar ya trabajo:
SELECT * FROM addenda.users WHERE users.username LIKE '\_'
y ejecutar la consulta siguiente devuelve un nombre de usuario que termina con una letra (s) específica:
SELECT * FROM addenda.users WHERE users.username LIKE '%s'
¿Qué estoy haciendo mal?
estoy de ejecutar la consulta directamente en el servidor para la barra invertida está llegando. ¡Solo traté de usar el comando ESCAPE y eso lo hizo funcionar exactamente como yo quiero! –
Al insertar una cadena en una instrucción preparada, '\ _' coincide con el carácter de subrayado, pero cuando la instrucción sql tiene una cadena literal, necesita' \\ _ 'en su lugar. Supongo que es porque el primer '\' escapa del segundo '\' en el nivel de cadena literal, luego en el nivel de postgres ve '\ _' en la cadena y lo empareja con el carácter de subrayado. Se –
dependen en gran medida de la configuración de 'standard_conforming_strings' si se apaga lo que necesita para duplicar el' \ 'y' e' debe poner antes de la marca de cotización. si está activado solo se necesita un '\'. – Jasen