mariaDB가 {"user":"128"}에서 숫자만 추출합니다.
문자열에서{"user":"128"}
예상외의128
.
그럴 수도 있습니다.{"user":"8"}
또는{"user":"12"}
또는{"user":"128798"}
이 바이올린 예제에서 일치하는 값은 다음과 같아야 합니다.3
스키마:
CREATE TABLE test1 ( id INT AUTO_INCREMENT, userid INT(11), PRIMARY KEY (id) ); INSERT INTO test1(userid) VALUES ('126'), ('2457'), ('3'), ('40'); CREATE TABLE test2 ( id INT AUTO_INCREMENT, code VARCHAR(1024), PRIMARY KEY (id) ); INSERT INTO test2(code) VALUES ('{"user":"128"}'), ('{"user":"2459"}'), ('{"user":"3"}'), ('{"user":"46"}');
쿼리:
(SELECT sub.`userid`, rev.`code` REGEXP '[0-9]' FROM `test1` AS sub, `test2` AS rev WHERE sub.`userid`= rev.`code` )
해본 적음REGEXP '[0-9]'
그리고 또한'[[:digit:]]'
하지만 운이 없습니다.
저도 노력했습니다.concat ('',value * 1) = value
또는concat(value * 1) = value
솔루션: 피들
REGEXP는 regexp가 문자열과 일치하는 경우 0 또는 1을 반환합니다.
'regexp_message' https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-substr 을 확인해야 합니다.
select REGEXP_SUBSTR(code, '"[0-9]+"') from test2
이것은 당신의 바이올린에서 MySQL 8 버전을 선택한 후에 저에게 효과가 있습니다.반환:
"128"
"2459"
null
"46"
또는
select REGEXP_SUBSTR(code, '[0-9]+') from test2
"k3"에 대해 null 대신 3을 원하는 경우
JSON_EXTRACT를 사용하는 것이 훨씬 낫지만, 열을 VARCHAR의 JSON 데이터 유형으로 재정의해야 합니다.
REGEXP_SUBSTR 함수를 사용합니다.
MariaDB [(none)]> SELECT REGEXP_SUBSTR('{"user":"128"}', '\\d+');
+-----------------------------------------+
| REGEXP_SUBSTR('{"user":"128"}', '\\d+') |
+-----------------------------------------+
| 128 |
+-----------------------------------------+
1 row in set (0.000 sec)
언급URL : https://stackoverflow.com/questions/69808568/mariadb-extract-only-the-digits-from-user128
'programing' 카테고리의 다른 글
SQL - 연속된 ID로 행 압축 (0) | 2023.06.08 |
---|---|
Excel(2007)에서 차트가 업데이트되지 않음 (0) | 2023.06.08 |
여러 개의 세포에 다른 숫자를 곱하는 가장 빠른 방법은 무엇입니까? (0) | 2023.06.08 |
오류가 발생하는 이유를 알 수 있는 사람이 있습니까? [속성 오류: 'list' 개체에 'encode' 속성이 없습니다.] (0) | 2023.06.08 |
왜 C는 C99 이전에 부울 데이터 유형이 없었습니까? (0) | 2023.06.08 |