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

Преобразувайте CamelCase в snake_case

Следният регулярен израз добавя долна черта пред всяка главна буква:

regexp_replace(name, '([A-Z])','_\1', 'g'))
 

Тъй като това води до долна черта в началото, това трябва да се премахне с помощта на trim()

trim(both '_' from lower(regexp_replace(name, '([A-Z])','_\1', 'g')))
 

Следната заявка:

with names (name) as (
  values ('StackOverflow'), 
         ('Foo'), 
         ('FooBar'), 
         ('foobar'), 
         ('StackOverflowCom')
)
select name, trim(both '_' from lower(regexp_replace(name, '([A-Z])','_\1', 'g'))) as new_name
from names;
 

връща:

<пре>name | new_name -----------------+------------------- StackOverflow | stack_overflow Foo | foo FooBar | foo_bar foobar | foobar StackOverflowCom | stack_overflow_com

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да преобразувам местното време в UTC?

  2. Защо postgres не използва индекса в моята заявка

  3. Как да потърся json колона за празни обекти?

  4. Грешка Невалиден синтаксис на въвеждане за цяло число за не-цяло число?

  5. Грешка при отпадане на Rails + Postgres:базата данни е достъпна от други потребители