Google bigquery BigQuery-替换字符串中的空白

Google bigquery BigQuery-替换字符串中的空白,google-bigquery,Google Bigquery,我的头发在这里变白了。我有一个表,其中有一列我想删除空白。 预期结果:8800000kr->8800000kr 我不能让它工作。请参见下面的查询输出: 为什么不删除空白 当我对模拟数据执行查询时,它会起作用: 第一个示例中的字符串可能有什么问题?无论我在哪里看到的都与示例2中的模拟字符串相同。下面的示例是针对BigQuery标准SQL的,并解释了您的问题 #standardSQL with `project.dataset.table` as ( select 'with spaces' s

我的头发在这里变白了。我有一个表,其中有一列我想删除空白。 预期结果:8800000kr->8800000kr

我不能让它工作。请参见下面的查询输出:

为什么不删除空白

当我对模拟数据执行查询时,它会起作用:


第一个示例中的字符串可能有什么问题?无论我在哪里看到的都与示例2中的模拟字符串相同。

下面的示例是针对BigQuery标准SQL的,并解释了您的问题

#standardSQL
with `project.dataset.table` as (
  select 'with spaces' space_type, '8 800 000 kr' slutpris union all
  select 'with non-breaking spaces', replace('8 800 000 kr', chr(32), chr(160)) slutpris
)
select space_type, slutpris,
  replace(slutpris, ' ', ''),
  regexp_replace(slutpris, r'\s', ''),
  regexp_replace(slutpris, r'\s|kr', '') 
from `project.dataset.table`    
有输出

所以,正如您所看到的,不间断空格不能被识别为空格字符或任何空白

忘了提可能的解决办法-

#standardSQL
with `project.dataset.table` as (
  select 'with spaces' space_type, '8 800 000 kr' slutpris union all
  select 'with non-breaking spaces', replace('8 800 000 kr', chr(32), chr(160)) slutpris
)
select space_type, slutpris,
  translate(slutpris, chr(32) || chr(160), ''),
  regexp_replace(slutpris, '[\u00A0\\s]', ''),
  regexp_replace(slutpris, '[\u00A0\\s]|kr', '')
from `project.dataset.table` 
有输出


下面的例子是BigQuery标准SQL,并解释了您的问题

#standardSQL
with `project.dataset.table` as (
  select 'with spaces' space_type, '8 800 000 kr' slutpris union all
  select 'with non-breaking spaces', replace('8 800 000 kr', chr(32), chr(160)) slutpris
)
select space_type, slutpris,
  replace(slutpris, ' ', ''),
  regexp_replace(slutpris, r'\s', ''),
  regexp_replace(slutpris, r'\s|kr', '') 
from `project.dataset.table`    
有输出

所以,正如您所看到的,不间断空格不能被识别为空格字符或任何空白

忘了提可能的解决办法-

#standardSQL
with `project.dataset.table` as (
  select 'with spaces' space_type, '8 800 000 kr' slutpris union all
  select 'with non-breaking spaces', replace('8 800 000 kr', chr(32), chr(160)) slutpris
)
select space_type, slutpris,
  translate(slutpris, chr(32) || chr(160), ''),
  regexp_replace(slutpris, '[\u00A0\\s]', ''),
  regexp_replace(slutpris, '[\u00A0\\s]|kr', '')
from `project.dataset.table` 
有输出


菲娜·瓦里亚贝尔纳姆:大头钉!Dom speglar ungefär hur bra jag mår just nu选择代码点lutpris返回什么?您可能有一个不是UTF8的字符串。试着尝试使用安全的方法将字节转换成字符串。在JSON选项卡中显示结果-它通常有助于理解真正的文本是什么选择代码点slutpris返回:[{slutpris:8800000KR,f0:[56,160,56,48,48,160,48,48,160,107,114],fitta:8 800000 kr,kuken:8 800000 kr,fittkuk:8 800000},SAFE_CONVERT_BYTES_TO_STRING返回错误:函数SAFE_没有匹配的签名CONVERT_BYTES_TO_参数类型的字符串。支持的签名:SAFE_CONVERT_BYTES_TO_STRINGBYTES at[4:3]Fina variabelnamn:-Tack!Dom speglar ungefär hur bra jag mår just Nu什么是选择编码点Lutpris返回?您可能有一个字符串不是UTF8。尝试使用安全的字节转换为字符串。在JSON选项卡中显示结果-这通常有助于理解真正的文本是选择编码点Lutpris返回的:[{slutpris:880000 kr,f0_U5;[56,160,56,48,48,160,48,48,48,160,107,114],fitta:880000 kr,kuken:880000 kr,fittkuk:880000},SAFE_CONVERT_BYTES_TO_STRING返回错误:参数类型:STRING的函数SAFE_CONVERT_BYTES_TO_STRING没有匹配的签名。支持的签名:SAFE_CONVERT_BYTES_TO_STRINGBYTES at[4:3]这是我见过的最奇怪的事情。即使阅读你的答案,我也认为REPLACEslutpris,CHR160,CHR32会起作用,但事实并非如此。这是我见过的最奇怪的事情。即使阅读你的答案,我也认为REPLACEslutpris,CHR160,CHR32会起作用,但事实并非如此。