Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.
Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin. Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Postgres: text NOT float ishlamaydigan xolatni qanday qilsa bo`ladi?

+4 ovoz
64 marta ko‘rilgan
so‘radi 25 dekabr, 16 Bilmasvoy (904 bal)

Bazada hamma ma'lumotlar text turida saqlangan.

Shu matnlarning qaysilarini float ga o`girib bo`lmasligini tekshirishim kerak.

Qayday qilsam bo`ladi?

1 ta javob

+4 ovoz
javob berdi 04 yanvar, 17 Saidolim (3,566 bal)
tanlangan 04 yanvar, 17 Bilmasvoy
 
Eng yaxshi javob

1-usul. Berilgan satrni butun songa (int) o`girish mumkinmi tekshiradi.

SELECT  ('123.23' ~ '^([0-9]+)\.([0-9]+)$')

bu yerda, float bo`lsa true (123.12), int bo`lsa false (123) qaytaradi

2-usul. Berilgan satrni butun yoki haqiqiy songa (int yoki float) o`girish mumkinmi tekshiradi.

SELECT  ('123.23' ~ '^[0-9]+(\.[0-9]+$)?')

bu yerda, float bo`lsa true (123.12), int bo`lsa true (123), aks xolda false qaytaradi

3-usul. 1-usulga qo`shimcha

SELECT  ('123' ~ '^[0-9]+$') OR ('123' ~ '^([0-9]+)\.([0-9]+)$') 

4-usul. Funksiya yasaysiz.

CREATE OR REPLACE FUNCTION isnumeric(text) RETURNS BOOLEAN AS $$
DECLARE x NUMERIC;
BEGIN
    x = $1::NUMERIC;
    RETURN TRUE;
EXCEPTION WHEN others THEN
    RETURN FALSE;
END;
$$
STRICT
LANGUAGE plpgsql IMMUTABLE;

va so`rovda ishlatasiz

SELECT x, isnumeric(x) FROM test;

Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.

Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin.

Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Telegram kanal YordamUzRss

...