我可以在 USQL 中使用正则表达式吗?
Can I use Regular Expressions in USQL?
是否可以在 USQL 中编写正则表达式比较?
例如,我不想使用多个 "LIKE" 语句来搜索各种食品的名称,而是想使用单个 Regex 表达式对多个项目进行比较。
您可以内联创建一个新的 Regex 对象,然后使用 IsMatch() 方法。
下面的示例 returns "Y" 如果 Offer_Desc 列包含单词 "bacon"、"croissant" 或 "panini"。
@output =
SELECT
, CSHARP(new Regex("\b(BACON|CROISSANT|PANINI)S?\b"
)).IsMatch(wrk.Offer_Desc.ToUpper())
? "Y"
: "N" AS Is_Food
FROM ... AS wrk
备注:
- CSHARP() 块是可选的,但您确实需要将正则表达式中的任何反斜杠加倍以转义它们(如上例所示)。
- 正则表达式示例将这些作为单个单词接受,可以是单数形式也可以是复数形式("paninis" 可以,但 "baconator" 不行)。
我假设它是相同的内联,但是当我在后面的代码中使用正则表达式时,我遇到了一些停止显示的速度问题。
如果您要检查合理数量的食品,我真的建议您只使用内联三元语句来获得您要查找的结果。
@output =
SELECT
wrk.Offer_Desc.ToLowerInvariant() == "bacon" ||
wrk.Offer_Desc.ToLowerInvariant() == "croissant" ||
wrk.Offer_Desc.ToLowerInvariant() == "panini" ? "Y" : "N" AS Is_Food
FROM ... AS wrk
如果您确实需要检查字符串 是否包含 字符串,字符串 Contains 方法可能仍然是更好的方法。
@output =
SELECT
wrk.Offer_Desc.ToLowerInvariant().Contains("bacon") ||
wrk.Offer_Desc.ToLowerInvariant().Contains("croissant") ||
wrk.Offer_Desc.ToLowerInvariant().Contains("panini") ? "Y" : "N" AS Is_Food
FROM ... AS wrk
是否可以在 USQL 中编写正则表达式比较?
例如,我不想使用多个 "LIKE" 语句来搜索各种食品的名称,而是想使用单个 Regex 表达式对多个项目进行比较。
您可以内联创建一个新的 Regex 对象,然后使用 IsMatch() 方法。
下面的示例 returns "Y" 如果 Offer_Desc 列包含单词 "bacon"、"croissant" 或 "panini"。
@output =
SELECT
, CSHARP(new Regex("\b(BACON|CROISSANT|PANINI)S?\b"
)).IsMatch(wrk.Offer_Desc.ToUpper())
? "Y"
: "N" AS Is_Food
FROM ... AS wrk
备注:
- CSHARP() 块是可选的,但您确实需要将正则表达式中的任何反斜杠加倍以转义它们(如上例所示)。
- 正则表达式示例将这些作为单个单词接受,可以是单数形式也可以是复数形式("paninis" 可以,但 "baconator" 不行)。
我假设它是相同的内联,但是当我在后面的代码中使用正则表达式时,我遇到了一些停止显示的速度问题。
如果您要检查合理数量的食品,我真的建议您只使用内联三元语句来获得您要查找的结果。
@output =
SELECT
wrk.Offer_Desc.ToLowerInvariant() == "bacon" ||
wrk.Offer_Desc.ToLowerInvariant() == "croissant" ||
wrk.Offer_Desc.ToLowerInvariant() == "panini" ? "Y" : "N" AS Is_Food
FROM ... AS wrk
如果您确实需要检查字符串 是否包含 字符串,字符串 Contains 方法可能仍然是更好的方法。
@output =
SELECT
wrk.Offer_Desc.ToLowerInvariant().Contains("bacon") ||
wrk.Offer_Desc.ToLowerInvariant().Contains("croissant") ||
wrk.Offer_Desc.ToLowerInvariant().Contains("panini") ? "Y" : "N" AS Is_Food
FROM ... AS wrk