Bạn có thể sử dụng TRANSLATE
để làm điều này. Về cơ bản, translate
loại bỏ tất cả các ký tự có thể in ASCII (không có nhiều ký tự trong số đó) và xem những gì bạn còn lại.
Đây là một truy vấn thực hiện điều đó:
WITH input ( p_string_to_test) AS (
SELECT 'This this string' FROM DUAL UNION ALL
SELECT 'Test this ' || CHR(7) || ' string too!' FROM DUAL UNION ALL
SELECT 'xxx' FROM DUAL)
SELECT p_string_to_test,
case when translate(p_string_to_test,
chr(0) || q'[ !"#$%&'()*+,-./0123456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~]',
chr(0)) is null then 'Yes' else 'No' END is_ascii
FROM input;