0
저는 MySQL에 상당히 익숙하지만 데이터베이스 테이블에 저장된 JSON 객체의 유효성을 검사하는 함수를 만들고 싶습니다.JSON 유효성을 검사하는 MySQL 함수를 어떻게 만들 수 있습니까?
기능을 만드는 방법에 대한 정보를 찾았지만 제대로 작동하지 않는 것처럼 보일 수 있습니다. 지나치게 복잡해 보이지는 않지만 아마도 적절한 구문을 사용하지 않는 것 같습니다. 이 코드를 실행하려고하면
DELIMITER //
CREATE FUNCTION CHECKJSON(DB_NAME varchar(255), TABLE_NAME varchar(255), JSON_COLUMN varchar(255))
RETURNS varchar(300)
BEGIN
DECLARE notNullCount int;
DECLARE validJSONCount int;
DECLARE result varchar(300);
SET notNullCount = (SELECT count(*) FROM DB_NAME.TABLE_NAME WHERE JSON_COLUMN IS NOT NULL);
set validJSONCount = (SELECT count(*) FROM DB_NAME.TABLE_NAME WHERE JSON_VALID(JSON_COLUMN) > 0);
CASE
WHEN (validJSONCount = notNullCount) THEN
SET result = CONCAT('VALID JSON COUNT: ', validJSONCount)
ELSE
SET result = CONCAT('INVALID JSON COUNT: ', (notNullCount - validJSONCount))
END;
RETURN result;
END //
DELIMITER ;
, 나는 다음과 같은 오류 메시지가 얻을 : 여기
내 코드입니다 "오류 코드 : 당신은 당신의 SQL 구문에 오류가 (1064); 설명서를 확인 올바른 구문을 사용하기위한 MySQL 서버 버전에 해당하는 'ELSE SET result = CONCAT ('INVALID JSON COUNT : ', (notNullCount - validJSONC'at 14 번째 줄)이 코드의 개선 방법에 대한 의견 고마워요!
감사합니다! 나는 함수를 성공적으로 만들었지 만 지금은 함수를 호출 할 수 없다. 내 코드는 다음과 같습니다. CHECKJSON (evidenceStaging, INEGI_ROADS_20150430_MX_9, value); 다음 오류가 발생합니다. 오류 코드 : 1064. SQL 구문에 오류가 있습니다. 귀하의 MySQL 서버 버전에 해당하는 설명서를 확인하여 올바른 구문이 1 행의 'CHECKJSON (evidenceStaging, INEGI_ROADS_20150430_MX_9, value)'근처에서 사용되는지 확인하십시오. –
또한 CHECKJSON 기능의 탐색기 기능에서 렌치를 눌렀을 때 다음과 같은 메시지가 나타납니다 : 서버에서 검색된 DDL을 구문 분석하는 동안 오류가 발생했습니다. DDL을 보거나 처리를 취소 하시겠습니까? 내 코드에 문제가있을 수 있다고 생각합니다. 기능을 편집 할 때 'WHEN'을 좋아하지 않는 것 같습니다. 생각? –
함수를 호출하려면 select를 사용해야합니다. 확인을 선택하십시오 (....); –