সাধারণ সমস্যা
নির্লিপ্তভাবে কোনও স্ট্রিংকে এভাবে পূর্ণসংখ্যায় কাস্টিং টাইপ করুন
SELECT ''::integer
প্রায়শই বিখ্যাত ত্রুটির ফলাফল:
Query failed: ERROR: invalid input syntax for integer: ""
সমস্যা
পোস্টগ্রিএসকিউএল নিরাপদে কোনও পূর্বনির্ধারিত ফাংশন নেই পূর্ণসংখ্যার জন্য কোনও স্ট্রিং টাইপ করার ।
সমাধান
পিএইচপি এর অন্তর্নিহিত () ফাংশন দ্বারা অনুপ্রাণিত একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন তৈরি করুন ।
CREATE FUNCTION intval(character varying) RETURNS integer AS $$
SELECT
CASE
WHEN length(btrim(regexp_replace($1, '[^0-9]', '','g')))>0 THEN btrim(regexp_replace($1, '[^0-9]', '','g'))::integer
ELSE 0
END AS intval;
$$
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT;
ব্যবহার
/* Example 1 */
SELECT intval('9000');
-- output: 9000
/* Example 2 */
SELECT intval('9gag');
-- output: 9
/* Example 3 */
SELECT intval('the quick brown fox jumps over the lazy dog');
-- output: 0