Mientras Colmena apoya positivo como consultas: ex.

select * from nombre_tabla where column_name como ‘root~%’;

Colmena no apoyo negativos como consultas: ex.

select * from nombre_tabla where column_name no como ‘root~%’;

¿Alguien sabe una solución equivalente que la Colmena ¿apoyo?

InformationsquelleAutor CMaury | 2011-04-11

7 Comentarios

  1. 3

    Retirar https://cwiki.apache.org/confluence/display/Hive/LanguageManual si usted no tiene. Yo de referencia todo el tiempo cuando estoy escribiendo consultas de hive.

    No he hecho nada, donde estoy tratando de coincidir con parte de una palabra, pero usted puede comprobar fuera de RLIKE (en esta sección https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#Relational_Operators)

    Este es probablemente un poco de un hack de trabajo, pero se puede hacer una sub consulta donde comprobar si coincide con el valor positivo y hacer un CASE (http://wiki.apache.org/hadoop/Hive/LanguageManual/UDF#Conditional_Functions) tener un valor conocido de la consulta principal para comprobar para ver si coincide o no.

    Otra opción es escribir un archivo UDF que hace la comprobación.

    Yo sólo soy la lluvia de ideas mientras estaba sentado en casa sin acceso a la Colmena, por lo que me puede estar faltando algo obvio. 🙂

    Espero que ayude de alguna manera o de otra. \^_^/

    EDIT: Añadir en el método adicional de mi comentario de abajo.

    Por tu ejemplo colName RLIKE ‘[^r][^s][^s][^t]~\w’ Que puede no ser la óptima REGEX, pero para buscar algo en lugar de sub-consultas

    • parece que el CASO va a hacer lo que se necesita, pero estoy teniendo problemas con la sintaxis. ¿Va en la cláusula Select o en la cláusula where? Este intento fracasó: «crear tabla tmp_table como el CASO de CUANDO un.nombre de usuario como el ‘twitter~%’ ENTONCES » ELSE select sum(file_size) como el almacenamiento, la suma(ancho de banda) como el ancho de banda de tmp_sites_compare1 a;’ Pero que no tiene sentido para mí para estar en la cláusula where… Pensamientos?
    • El CASE es en el SELECT cláusula. SELECT CASE WHEN ... THEN ... END AS colName FROM...
    • Yo empezamos a jugar con RLIKE algo en mi trabajo, y aunque no va a ser el óptimo para todas las situaciones se puede utilizar la expresión ‘no’ ^. Para tu ejemplo colName RLIKE '[^r][^o][^o][^t]~\\w' Que puede no ser la óptima REGEX, pero para buscar algo en lugar de sub-consultas
    • Jaja. sí, que es incluso mejor que la sub-consultas… Gracias por toda la ayuda. La aceptación de su respuesta.
    • Para hacer un negativo de regex lookahead que usted puede hacer (?!root) pero tenga en cuenta que si usted está haciendo eso en bash que usted necesita para escapar de la ! como \! por lo que bash no piense que es un evento. así hive -e "SELECT * FROM table_name WHERE colName RLIKE '^(?\!root~).*$'" debería funcionar exactamente igual que el no es como en otros DBs
  2. 46

    Intente esto:

    Where Not (Col_Name like '%whatever%')
    

    también funciona con rlike:

    Where Not (Col_Name rlike '.*whatever.*')
    
  3. 4

    En SQL:

    select * from table_name where column_name not like '%something%';
    

    De La Colmena:

    select * from table_name where not (column_name like '%something%');
    
  4. 1

    Utilizando regexp_extract funciona así:

    select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
    
  5. 0

    De hecho, usted puede hacer así:

    select * from table_name where not column_name like 'root~%';
    

Dejar respuesta

Please enter your comment!
Please enter your name here