Pada dasarnya saya memiliki daftar besar alamat yang terkadang dapat dimulai dengan "nomor" FLAT, "alamat lainnya" atau "nomor" APARTEMEN, "alamat lainnya" atau kadang-kadang bahkan "nomor"A, "alamat lainnya" atau FLAT " nomor "A

Bagaimana cara memilih angka pertama dan jika angka tersebut memiliki karakter, maka sertakan juga?

Contoh:

  • jika alamatnya FLAT 3, thanos house, nw1 6fs maka saya harus memilih 3
  • jika alamatnya FLAT 3B, thanos house, nw1 6fs maka saya harus memilih 3B
  • jika alamatnya 324, thanos house, nw1 6fs maka saya harus memilih 324
  • jika alamatnya APARTMENT 324, thanos house, nw1 6fs maka saya harus memilih 324
-3
Luffydude 16 Juli 2020, 16:54

1 menjawab

Jawaban Terbaik

Ekspresi substring() ini apa yang kamu tanyakan:

substring(string, '\m\d+\D?*\M')

Ekspresi reguler hanya mengembalikan kecocokan pertama, atau NULL jika tidak ada.

\m ... awal dari sebuah kata
\d+ ... satu atau lebih digit
\D? ... nol atau satu bukan angka
\M ... akhir kata

Demo:

SELECT string, substring(string, '\d+\D?\d*\M')
FROM  (
   VALUES
  ('FLAT 3, thanos house, nw1 6fs')
, ('FLAT 3B, thanos house, nw1 6fs')
, ('324, thanos house, nw1 6fs')
, ('APARTMENT 324, thanos house, nw1 6fs')
   ) tbl(string);

db<>fiddle di sini

2
Erwin Brandstetter 16 Juli 2020, 14:18