내 테이블에 json 문자열을 포함하는 문자열 필드가 있습니다. 그래서,Yii2 - 문자열 필드의 숫자에 대한 활성 레코드 쿼리 검색
id json
----------------
1 [123,45,1]
2 [23,4,5]
3 [7,8,9]
가 지금은 자신의 JSON 필드에 숫자를 포함하는 기록 (Yii2에서 활동 레코드를 사용)을 가져 오려는 :
을 tbl_table 이름은 그것의이 3 개 레코드가 말할 수 있습니다
id json
----------------
1 [123,45,1]
2 [23,4,5]
이 실제로되지 않습니다 :
$res = Table::find()->where(['like','json','23'])->all();
이 쿼리는 다음 레코드를 반환 잘못된 결과가 있지만 내가 원하는 것은 id=2
으로 레코드 만 반환하는 것입니다. 내가 어떻게 할 수 있니?
등등 ['like','json','5']
또는 ['like','json','4']
등과 같이? 숫자는 비슷하지만 정확한 숫자를 일치 시키길 원합니다.
및 기타 질문 ['like','json',[4,5,6]]
이 질문에 대한 대답으로 마지막 질문을 원합니다. 다른 말로하면 나는 like 연산자에 배열을 전달하려고하며 자동으로 각 요소에 대해 OR 연산을 수행합니다. 어떻게 든 가능합니까? 배열에 대해 반복 작업을 수행하고 다중 쿼리 실행없이 마지막 질문 기능을 사용하여 여러 Or_like 조건을 만들 수 있습니까?
덕분에이 내가 원하는 트릭 버전의 MySQL에서 시작 JSON_CONTAINS 기능을
p.s의 json_contains를 MySQL의 기능을 사용하고 사용합니다. –
mariadb에 아날로그가 있습니까? –