我正在尝试替换数据中的某些客户名称。我能够使用Google BigQuery语言通过对一个特定字符串的替换功能将字符串的一部分转换为另一部分的SQL。
Replace(CustomerName, 'ABC', 'XYZ')
但是,我还有其他一些需要使用replace函数,以便
Replace(CustomerName, 'PLO', 'Rustic')
Replace(CustomerName, 'Kix', 'BowWow')
等等。
我试着做
Replace(CustomerName, 'ABC', 'XYZ') OR Replace(CustomerName, 'PLO', 'Rustic') OR Replace(CustomerName, 'Kix', 'BowWow')
但这给了我一条错误信息。
我也尝试过
Replace(CustomerName, 'ABC', 'XYZ') AND Replace(CustomerName, 'PLO', 'Rustic') AND Replace(CustomerName, 'Kix', 'BowWow')
但这也给我一个错误信息。
我可以只使用“ case when statement”,然后对每个语句进行硬编码,但是我想知道是否有更好/更快的方法来代替replace语句。
谢谢你的帮助。
该CASE WHEN
选项非常合理。另一种选择是将它们链接在一起:
REPLACE(
REPLACE(
REPLACE(
CustomerName,
'ABC',
'XYZ'),
'PLO',
'Rustic'),
'Kix',
'BowWow')
您选择哪一个取决于实际情况。链接的REPLACE
调用可能会更快,但是它们可能会以怪异的方式重叠(例如,如果一个替换的输出与下一个替换的输入匹配)。该CASE WHEN
方法避免了该问题,但是它可能会更昂贵,因为您需要执行一个操作以找到子字符串,然后执行另一个操作以实际替换它。
请注意,当您使用AND
或时OR
,您试图将字符串输出合并REPLACE
为一个布尔值,这就是失败的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句