반응형
ms-access NZ를 IFNULL MySQL 또는 MariaDB 함수로 변환하려면 어떻게 해야 합니까?
ms-access에서 regex 기반 MySQL 또는 MariaDB SQL에 대한 SQL 쿼리의 "translator"를 sed와 함께 씁니다.
문제는 nz 함수로 두 가지 형태가 있습니다.
access MariaDB or MySQL
nz(expr1,expr2) --> ifnull(expr1,expr2)
nz(expr) --> ifnull(expr,0)
각 케이스에 대해 다음 두 가지 조건이 있지만 두 가지 모두에 대해 하나만 있는 것은 아닙니다.
sed -E 's/nz\((.*),(.*)\)/ifnull\(\1,\2\)/gi'
sed -E 's/nz\((.*)\)/ifnull\(\1,0\)/gi'
둘 다 하나의 침전물에 어떻게 결합하는지 아세요?아니면 다른 툴을 tr, awk 또는 perl로 사용할 수도 있습니다.
갱신하다
이 입력의 경우:
SELECT nz(column1),nz(column2,4),column3 FROM table;
바람직한 출력은 다음과 같습니다.
SELECT ifnull(column1,0),ifnull(column2,4),column3 FROM table;
한 가지 옵션은 2개의 캡처 그룹이 포함된 패턴을 사용하는 것입니다. 여기서 두 번째 그룹은 선택 사항입니다.그런 다음 정의된 perl을 사용하여 조건부 치환을 수행할 수 있습니다.
양식
nz\(([^,()]+)(,[^,()]+)?\)
설명.
nz\(
경기nz(
(
그룹 1을 캡처하다[^,()]+
부정 문자 클래스, 1+ 곱하기 임의의 문자(제외),
(
)
)
그룹 1을 닫습니다.(
그룹 2를 캡처하다,[^,()]+
경기,
를 제외하고 임의의 문자를 1+배 이상 일치시킵니다.,
(
)
)?
그룹 2를 닫고 옵션으로 설정\)
경기)
코드 예시
my $str = "SELECT nz(1), nz(2,3), column FROM table;";
$str =~ s/nz\(([^,()]+)(,[^,()]+)?\)/defined($2) ? "ifnull(" . $1.$2 . ")":"ifnull(" . $1 . ", 0)"/ge;
print $str
s///
치환에 사용되다/e
평가 수식자/g
글로벌 수식자
산출량
SELECT ifnull(1, 0), ifnull(2,3), column FROM table;
언급URL : https://stackoverflow.com/questions/61415745/how-can-i-translate-ms-access-nz-to-ifnull-mysql-or-mariadb-functions
반응형
'programing' 카테고리의 다른 글
MariaDB / Larabel 5 태그 보관에 최적인 엔진 (0) | 2022.09.16 |
---|---|
최소 유효 JSON은 얼마입니까? (0) | 2022.09.16 |
Access-Control-Allow-Origin 헤더는 어떻게 동작합니까? (0) | 2022.09.16 |
PHP는 오류 로그를 어디에 저장합니까? (PHP 5, Apache, Fast CGI 및 cPanel) (0) | 2022.09.15 |
PHP에서 이중 물음표(?) 연산자는 무엇을 의미합니까? (0) | 2022.09.15 |