Pregunta

SELECT * 
FROM `thread` 
WHERE forumid NOT IN (1,2,3) AND IF( LEFT( title, 1) = '#', 1, 0)
ORDER BY title ASC

Tengo esta consulta que seleccionará algo si comienza con un #. Lo que quiero hacer es que si # se da como valor, buscará números y caracteres especiales. O cualquier cosa que no sea una letra normal.

¿Cómo haría esto?

¿Fue útil?

Solución

Si desea seleccionar todas las filas cuyo " título " no comienza con una letra, use REGEXP:

  SELECT * 
    FROM thread 
   WHERE forumid NOT IN (1,2,3)
     AND title NOT REGEXP '^[[:alpha:]]'
ORDER BY title ASC
  • NO significa " no " (obviamente;))
  • ^ significa que " comienza con "
  • [[: alpha:]] significa '' solo caracteres alfabéticos ''

Obtenga más información sobre REGEXP en el manual de MySQL .

Otros consejos

es POSIBLE, puedes intentar lanzarlo como un char:

CAST('#' AS CHAR)

pero no sé si esto funcionará para el octothorpe (también conocido como símbolo de libra :)) porque ese es el símbolo para comenzar un comentario en MySQL

  SELECT t.* 
    FROM `thread` t
   WHERE t.forumid NOT IN (1,2,3) 
     AND INSTR(t.title, '#') = 0
ORDER BY t.title

Utilice el INSTR para obtener la posición de una cadena dada: si lo desea cuando se inicia una cadena, verifique 0 (posiblemente 1; la documentación no indica si es cero o uno basado).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top