MySQL의 BOOL 변수를 JSON의 BOOL 값으로 설정할 수 없습니까?
P粉707235568
P粉707235568 2023-09-03 10:57:44
0
1
451
<p>MySQL 버전: 8.0.27</p> <p>이건 제겐 말이 안 됩니다. 다음과 같은 정의가 있습니다. </p> <pre class="brush:php;toolbar:false;">DECLARE p_array_only bool DEFAULT IFNULL(JSON_EXTRACT(in_parameters, '$.array_only'),FALSE);</pre> <p>올바른 JSON 구조를 전달하는 경우: </p> <pre class="brush:php;toolbar:false;">{"array_only":true}</pre> <p>오류가 발생했습니다: </p> <pre class="brush:php;toolbar:false;">1행의 'p_array_only' 열에 대한 'true' 값이 올바르지 않습니다</pre> <p>키를 완전히 생략하면 작동합니다(IFNULL이 Null을 반환하고 FALSE로 설정되기 때문입니다). </p> <p>무슨 일이 일어났나요? JSON의 다른 모든 코드 할당은 잘 작동합니다(INT, Text, SMALLINT 등). 형식은 정확히 동일합니다. 그리고 이 코드는 몇 달 전(8.0.24 사용)에는 작동했을 것이라고 확신합니다. </p> <p>저도 시도해 보았습니다: </p> <pre class="brush:php;toolbar:false;">IFNULL(IF(JSON_EXTRACT(@test1, '$.array_only') IS TRUE,TRUE,FALSE),FALSE)</pre> <p>같은 오류입니다. </p> <p>그렇다면 8.0.27에서 true/false BOOL JSON 값을 BOOL MySQL 값으로 간단히 변환하려면 어떻게 해야 할까요? </p>
P粉707235568
P粉707235568

모든 응답(1)
P粉541796322

BOOLEAN은 MySQL에 내장된 데이터 유형이 아닙니다. 별칭이며 TINYINT(1)로 구현됩니다.

참조 https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html


암시적 데이터 유형 변환 사용:

으아악

해당 값이 문자열 또는 null 유형인 경우 실패합니다.

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=9c5fac2c7533d9e365a449ce00c06f1b

PS. 짧은 형식 DEFAULT IFNULL(0 + in_parameter->'$.array_only', FALSE);도 유용합니다.

PPS 물론 명시적인 CAST()도 사용할 수 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!