이름을 o.name <> n.name 으로만 비교하면 9 번 하나만 나오고, 값이 NULL 로 사라진 4 번은 빠집니다. IS DISTINCT FROM 으로 바꾸면 4 번과 9 번이 나옵니다. 8 번은 양쪽 NULL 이라 두 방식 모두에서 같은 행입니다.
SELECT
o.id
FROM old_cust o
JOIN new_cust n ON n.id = o.id
WHERE o.name IS DISTINCT FROM n.name
ORDER BY o.id;ID
--
4
9
(2행)숫자로 바꿀 수 없는 금액은 정규식으로 찾습니다. 정규식 함수는 고급 09 정규식에서 다뤘고, MSSQL 2022 이하에는 없어서 LIKE 나 PATINDEX 를 씁니다. 날짜는 자리수, 월 범위, 일 범위를 순서대로 검사합니다.
SELECT
id
, amt
FROM old_cust
WHERE NOT REGEXP_LIKE(amt, '^[0-9]+