Python MySQL – Operador LIKE()

En este artículo, discutiremos el uso del operador LIKE en MySQL usando el lenguaje Python.

A veces podemos requerir tuplas de la base de datos que coincidan con ciertos patrones. Por ejemplo, es posible que deseemos recuperar todas las columnas donde las tuplas comienzan con la letra ‘y’, o comienzan con ‘b’ y terminan con ‘l’, o incluso patrones de strings más complicados y restrictivos. Aquí es donde la cláusula LIKE viene al rescate, a menudo junto con la cláusula WHERE en SQL.

Hay dos tipos de comodines que se utilizan para filtrar los resultados:

  • El signo de porcentaje (%): se usa para hacer coincidir cero o más caracteres. (Longitud variable)
  • El signo de subrayado (_): se utiliza para hacer coincidir exactamente un carácter. (Longitud fija)

Sintaxis:

SELECCIONE columna1, columna2, …,columna

DESDE table_name

DONDE columna LIKE patrón;

Las siguientes son las reglas para la coincidencia de patrones con la cláusula LIKE: 

Patrón Sentido
‘a%’ Coincidencia de strings que comienzan con ‘a’
‘%a’ Coincidencia de strings con final en ‘a’
‘a’ Haga coincidir las strings que contienen el comienzo con ‘a’ y terminan con ‘t’.
‘%guau%’ Haga coincidir strings que contengan la substring ‘wow’ en cualquier posición.
‘_guau%’ Haga coincidir las strings que contienen la substring ‘wow’ en la segunda posición.
‘_a%’ Coincide con strings que contienen ‘a’ en la segunda posición.
‘a_ _%’ Haga coincidir strings que comiencen con ‘a’ y contengan al menos 2 caracteres más.

Para usar operaciones LIKE vamos a usar la siguiente tabla:

A continuación hay varios ejemplos que muestran cómo usar el operador LIKE en Python MySQL.

Ejemplo 1:

Programa para mostrar filas donde la dirección comienza con la letra G en la tabla itdept.

Python3

# import mysql.connector module
import mysql.connector
  
# establish connection
database = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="gfg"
)
  
# creating cursor object
cur_object = database.cursor()
print("like operator address starts with G")
  
#  query
find = "SELECT * from itdept where Address like 'G%' "
  
# execute the query
cur_object.execute(find)
  
# fetching all results
data = cur_object.fetchall()
for i in data:
    print(i[0], i[1], i[2], i[3], sep="--")
  
# Close database connection
database.close()

Producción:

Ejemplo 2:

Aquí mostramos todas las filas donde el nombre comienza con la letra H y termina con la letra A en la tabla.

Python3

# import mysql.connector module
import mysql.connector
  
# establish connection
database = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="gfg"
)
  
# creating cursor object
cur_object = database.cursor()
print("like operator name starts with H and ends with A")
  
#  query
find = "SELECT * from itdept where Name like 'H%A' "
  
# execute the query
cur_object.execute(find)
  
# fetching all results
data = cur_object.fetchall()
for i in data:
    print(i[0], i[1], i[2], i[3], sep="--")
  
# close database connection
database.close()

Producción:

Ejemplo 3:

En este programa, mostramos todas las filas que tienen direcciones de tres letras en la tabla.

Python3

# import mysql.connector module
import mysql.connector
  
# establish connection
database = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="gfg"
)
  
# creating cursor object
cur_object = database.cursor()
print("like operator address has three letters only")
  
#  query
find = "SELECT * from itdept where Address like '___' "
  
# execute the query
cur_object.execute(find)
  
# fetching all results
data = cur_object.fetchall()
for i in data:
    print(i[0], i[1], i[2], i[3], sep="--")
  
# close database connection
database.close()

Producción:

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *