sql >> Databáze >  >> RDS >> Mysql

MYSQL REGEXP vyhledává v řetězci JSON

No, je to docela snadné ladit:

SELECT '"listeListeOuiNon":"2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'

vrátí 0

SELECT '"listeListeOuiNon":"1"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'

vrátí 1

SELECT '"listeListeOuiNon":"1,2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'

vrátí 1

Takže na vaší straně něco není v pořádku... protože prostě nemůže vrátit řádky, kde se tělo rovná "listeListeOuiNon":"2" . Ale je možné, že toto tělo má několik těchto prohlášení, něco jako:

body => '"listeListeOuiNon":"1,2", "listeListeOuiNon":"2"'

Takže musíte upravit svůj regulární výraz:

'^"listeListeOuiNon":".*1.*"$'

Pak musíte svůj dotaz upravit:

SELECT DISTINCT tag, body FROM pages WHERE (body REGEXP BINARY '"listeListeOuiNon":".*1.*"') AND NOT (body REGEXP BINARY '"listeListeOuiNon":"2"')



  1. SQL SERVER 2016 – Porovnání plánů provádění

  2. vložte více řádků pomocí jedné hodnoty forigenk ve formuláři

  3. Pochopení uzamčení SQL Serveru na zabezpečené databázové prostředí

  4. MySQL - VYBERTE jméno, které je na prvním místě v abecedním pořadí