una todas seleccionar por ocultar numero menos las excluir excepto consulta columnas columna campo sql mysql

sql - todas - select por numero de columna



MySQL selecciona donde la columna no está vacía (10)

En MySQL, ¿puedo seleccionar columnas solo donde algo existe?

Por ejemplo, tengo la siguiente consulta:

select phone, phone2 from jewishyellow.users where phone like ''813%'' and phone2

Intento seleccionar solo las filas donde el teléfono comienza con 813 y el teléfono 2 tiene algo.


Compare el valor de phone2 con una cadena vacía:

select phone, phone2 from jewishyellow.users where phone like ''813%'' and phone2<>''''

Tenga en cuenta que el valor NULL se interpreta como false .


Compruebe valores de cadena NULL y vacíos:

select phone , phone2 from users where phone like ''813%'' and trim(coalesce(phone2, '''')) <>''''

NB Creo que COALESCE () es un estándar SQL (-ish), mientras que ISNULL () no lo es.



Podemos usar CASE para establecer un valor en blanco a alguna char o String. Estoy usando NA como cadena predeterminada.

SELECT phone, CASE WHEN phone2 = '''' THEN ''NA'' END AS phone2 ELSE ISNULL(phone2,0) FROM jewishyellow.users WHERE phone LIKE ''813%''


Puede usar el comodín del operador para lograr esto:

SELECT t.phone, t.phone2 FROM jewishyellow.users t WHERE t.phone LIKE ''813%'' AND t.phone2 like ''[0-9]'';

de esta forma, puedes obtener todos los teléfonos2 que tengan un prefijo numérico.


Si hay espacios en el campo phone2 desde la entrada de datos involuntarios, puede ignorar esos registros con las funciones IFNULL y TRIM:

SELECT phone, phone2 FROM jewishyellow.users WHERE phone LIKE ''813%'' AND TRIM(IFNULL(phone2,'''')) <> '''';


Una respuesta que he estado usando que me ha funcionado bastante bien, que ya no veía aquí (esta pregunta es muy antigua, entonces puede que no haya funcionado) es en realidad

SELECT t.phone, t.phone2 FROM jewishyellow.users t WHERE t.phone LIKE ''813%'' AND t.phone2 > ''''

Observe la parte > '''' , que verificará si el valor no es nulo, y si el valor no es solo un espacio en blanco o en blanco.

Básicamente, si el campo tiene algo aparte de espacios en blanco o NULL , es cierto. También es súper corto, por lo que es fácil de escribir, y otra ventaja sobre las COALESCE() e IFNULL() es que es IFNULL() índice, ya que no comparas el resultado de una función en un campo con nada.

Casos de prueba:

SELECT if(NULL > '''',''true'',''false'');-- false SELECT if('''' > '''',''true'',''false'');-- false SELECT if('' '' > '''',''true'',''false'');-- false SELECT if(''/n'' > '''',''true'',''false'');-- false SELECT if(''/t'' > '''',''true'',''false'');-- false SELECT if(''Yeet'' > '''',''true'',''false'');-- true


Utilizar:

SELECT t.phone, t.phone2 FROM jewishyellow.users t WHERE t.phone LIKE ''813%'' AND t.phone2 IS NOT NULL


SELECT phone, phone2 FROM jewishyellow.users WHERE phone like ''813%'' and (phone2 <> "");

Puede necesitar algunos retoques dependiendo de cuál sea su valor predeterminado. Si permitiste el llenado nulo, entonces puedes hacer "No NULO" en su lugar, lo cual es obviamente mejor.


select phone, phone2 from jewishyellow.users where phone like ''813%'' and phone2 is not null