return 使用 googleSQL 的字符串中只有 1-10000 个数字

return only 1-10000 number from a string using googleSQL

场景如下

Table A,列 Elem1

Elem1
John1235
kkajdak587
klajdsfds5
sjdfsj35
sdkfjsdj57
skjlfjd1
sdjflsj34
lfkjgk108
ksdjlkdjfk288
ksjsfsj1688

我只想从 Column Elem 1 的字符串值中提取数字。 数字是从 1 到 10000。

我该怎么做?

BigQuery 支持 REGEXP_REPLACE 替换任何 不是 [0-9] 的内容;这将为您提取所有数字。

SELECT 
  Elem1, 
  REGEXP_REPLACE(Elem1, "[^0-9]", "") as numbersOnly
FROM myTable

如果您想随后将其过滤为 1-10000 之间的值,则需要将其放入 WHERE 子句中。

SELECT 
   Elem1,
   cast(REGEXP_REPLACE(Elem1, "[^0-9]", "") as int64) as numbersOnly
FROM myBaseTable 
WHERE cast(REGEXP_REPLACE(Elem1, "[^0-9]", "") as int64) BETWEEN 1 and 10000