ANSI 표준이라는게 JOIN 은 명확하게 구분이 되는데...
함수는 DBMS 마다 다 달라서.. ANSI 표준함수가 있는지는 모르겠네요?
아래 예시만 봐도 4가지 db 에 공통으로 적용할 수 있는 게 없네요.
-- Oracle -- SELECT card_no , SUBSTR(card_no, 1, 10) || '****' || SUBSTR(card_no, 15, 5) v , REGEXP_REPLACE(card_no, '(.{10})(.{4})', '\1****') v FROM (SELECT '1234-1234-1234-1234' card_no FROM dual) a ; -- MSSQL -- SELECT card_no , CONCAT(SUBSTRING(card_no, 1, 10), '****', SUBSTRING(card_no, 15, 5)) v , SUBSTRING(card_no, 1, 10) + '****' + SUBSTRING(card_no, 15, 5) v , LEFT(card_no, 10) + '****' + SUBSTRING(card_no, 15, 5) v , STUFF(card_no, 11, 4, '****') v FROM (SELECT '1234-1234-1234-1234' card_no) a ; -- MySQL -- SELECT card_no , CONCAT(SUBSTRING(card_no, 1, 10), '****', SUBSTRING(card_no, 15, 5)) v , CONCAT(LEFT(card_no, 10), '****', SUBSTRING(card_no, 15, 5)) v FROM (SELECT '1234-1234-1234-1234' card_no) a ; -- PostgreSQL -- SELECT card_no , CONCAT(SUBSTR(card_no, 1, 10), '****', SUBSTR(card_no, 15, 5)) v , SUBSTR(card_no, 1, 10) || '****' || SUBSTR(card_no, 15, 5) v , LEFT(card_no, 10) || '****' || SUBSTRING(card_no, 15, 5) v , REGEXP_REPLACE(card_no, '(.{10})(.{4})', '\1****') v FROM (SELECT '1234-1234-1234-1234'::varchar card_no) a ;