PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Връщане на нечислови стойности от колона на PostgreSQL база данни

Следващите примери за PostgreSQL връщат само онези редове, които нямат числова стойност в дадена колона.

Примерни данни

Нека създадем таблица с примерни данни:

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
    c1 varchar(255)
);

INSERT INTO t1 (c1) VALUES 
    ('0'),
    ('1'),
    ('+1'),
    ('-1'),
    ('00.00'),
    ('73.45'),
    ('+73.45'),
    ('-73.45'),
    ('.246'),
    ('-.34e7'),
    ('12.e-3'),
    ('1.2e+4'),
    ('a'),
    ('9afc'),
    ('e7'),
    ('+e0'),
    ('Ten'),
    ('5 Dollars');

SELECT * FROM t1; 

Таблицата вече е създадена и съдържа следните данни:

 c1 ----------- 0 1 +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 a 9afc e7 +e0 Десет 5 долара 

Колоната е varchar(255) колона, така че не е числова. Може (и съдържа) числа, но те се съхраняват като данни за знаци. Може също да съдържа произволен текст (което прави).

Връщане на нечисловите стойности

Можем да използваме следната заявка, за да върнем нечисловите стойности от горната таблица:

SELECT c1
FROM t1 
WHERE c1 !~ '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'; 

Резултат:

 c1 ----------- 12.e-3 a 9afc e7 +e0 Десет 5 долара

Връщане на нецели числа

Ако искаме да върнем само нецели числа, заявката може да бъде много по-проста:

SELECT c1
FROM t1 
WHERE c1 !~ '^[0-9]+$'; 

Резултат:

 c1 ----------- +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 a 9afc e7 +e0 Десет 5 долара

Не съдържа цифрови данни

Ако искаме да намерим редове, които не съдържат цифрови данни, можем да направим следното:

SELECT c1 
FROM t1 
WHERE c1 !~ '[0-9]+'; 

Резултат:

 c1 ----- Десетка

В PostgreSQL, !~ е оператор, чувствителен към малки и големи букви, който се използва за връщане на стойности, които не съвпадат с дадения регулярен израз. За съвпадения без значение на малки букви, използвайте !~* .

Можете да използвате ~ за да върнете всички редове, които правят съответства на регулярния израз (и ~* за съвпадения без разлика в главните букви).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как justify_days() работи в PostgreSQL

  2. Как да деактивирам временно тригерите в PostgreSQL?

  3. Как да анализирам JSON в postgresql

  4. ECONNREFUSED за Postgres на nodeJS с докери

  5. Автоматично увеличаване на колоната на таблицата