Mariadb 쿼리 utf8 이스케이프 문자열
5.5.65-MariaDB MariaDB Server를 사용하고 있습니다.
json 문자열을 저장하는 "remoteData"라는 이름의 중간 텍스트 열이 있는 테이블이 있습니다.이 json 문자열의 문자열 값은 이스케이프 utf8 시퀀스로 저장됩니다(예:
"patientFirstName":"\u0395\u039b\u0395\u03a5\u0398\u0395\u03a1\u0399\u039f\u03a3"
위의 값은 그리스어 이름 "εευθριςοελ"."입니다.
쿼리를 사용하여 이 열을 검색하려고 합니다.
Select * from sync_details where remoteData like "%ΛΕΥΘΕΡ%"
하지만 난 빈 세트를 얻었어요.
저는 이것이 가치관이 빠져나갔기 때문이라고 생각하지만 어떻게 해야 할지 모르겠습니다.
편집: 쿼리는 php를 통해 실행되므로 php 함수가 포함된 솔루션을 사용할 수 있습니다.
잘 부탁드립니다.
크리스토포로스
사용하도록 정의된 데이터베이스 사용CHARACTER SET utf8
그리고 autf8_general_ci
조합은 다음과 같이 작동해야 합니다.
CREATE DATABASE IF NOT EXISTS `test` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `test`.`sync_details` (`remoteData` MEDIUMTEXT);
INSERT INTO `test`.`sync_details` (`remoteData`) VALUES ('{"patientFirstName":"\\u0395\\u039b\\u0395\\u03a5\\u0398\\u0395\\u03a1\\u0399\\u039f\\u03a3"}');
SELECT `remoteData` FROM `test`.`sync_details` WHERE `remoteData` LIKE '%ΛΕΥΘΕΡ%';
+----------------------------------------------+
| remoteData |
+----------------------------------------------+
| {"patientFirstName": "ΕΛΕΥΘΕΡΙΟΣ"} |
+----------------------------------------------+
1 row in set (0,00 sec)
당신은 또한 시도할 수 있습니다.JSON_EXTRACT
저장된 JSON 개체에서 구조화된 데이터를 가져옵니다.저는 그냥 다음과 같이 테스트했습니다.
SELECT JSON_EXTRACT(`remoteData`, "$.patientFirstName")
FROM `test`.`sync_details`
WHERE JSON_EXTRACT(`remoteData`, "$.patientFirstName")
LIKE '%ΛΕΥΘΕΡ%';
+--------------------------------------------------+
| JSON_EXTRACT(`remoteData`, "$.patientFirstName") |
+--------------------------------------------------+
| "ΕΛΕΥΘΕΡΙΟΣ" |
+--------------------------------------------------+
1 row in set (0,00 sec)
JSON 개체의 데이터를 인덱싱하려면 다음을 사용하여 테이블에 "생성된 열"을 추가할 수 있습니다.GENERATED ALWAYS
통사론
ALTER TABLE `test`.`sync_details` ADD COLUMN `firstName` VARCHAR(100) GENERATED ALWAYS AS (`remoteData` ->> '$.patientFirstName');
CREATE INDEX `firstnames_idx` ON `test`.`sync_details`(`firstName`);
SELECT `firstName` FROM `test`.`sync_details` WHERE `firstName` LIKE '%ΛΕΥΘΕΡ%';
+----------------------+
| firstName |
+----------------------+
| ΕΛΕΥΘΕΡΙΟΣ |
+----------------------+
1 row in set (0,00 sec)
이것은 MariaDB >= 10.2 및 autf8 인코딩 db 및 autf8_general_ci colation에서만 작동합니다.
언급URL : https://stackoverflow.com/questions/63751446/mariadb-query-utf8-escaped-string
'programing' 카테고리의 다른 글
제한이 있는 수많은 쿼리의 "교차"를 가져오기 위한 MySQL 쿼리 (0) | 2023.08.23 |
---|---|
ASP.NET에서 파일 경로를 URL로 변환하는 방법 (0) | 2023.08.23 |
Python의 TypeHinting 튜플 (0) | 2023.08.23 |
JS를 통해 트윗 다시 렌더링 버튼 (0) | 2023.08.23 |
잔가지 템플릿에서 모든 변수를 검색하는 방법은 무엇입니까? (0) | 2023.08.23 |