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

Как да изпълним заявка за търсене на стойност на колона, съдържаща низ със стойности, разделени със запетая?

Можете да направите нещо подобно.

select name from zone_table where 
string_to_array(replace(tags,' ',''),',')@>
string_to_array(replace('down, 110.22.100.3',' ',''),',');

1) изтрийте интервали в съществуващия низ за правилно разделяне на string_to_array без никакви интервали отпред, като използвате replace

2)низ_към_масив преобразува вашия низ в масив, разделен със запетая.

3) @> е съдържа оператор

(ИЛИ)

Ако искате да съвпаднете като цяло

select name from zone_table where POSITION('down, 110.22.100.3' in tags)!=0

За отделни съвпадения можете да направите

select name from zone_table where POSITION('down' in tags)!=0 and 
POSITION('110.22.100.3' in tags)!=0

Повече за позицията тук



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кумулативен сбор от стойности по месеци, попълване на липсващите месеци

  2. Уникално ограничение за една колона с изключване на ред със същите стойности в друга

  3. Планетарно подравняване

  4. Външни ключове, препращащи към други външни ключове в PostgreSQL

  5. Как да създадете последователност, използвайки начална стойност от заявка?