问题描述
我在表格中有以下值的列: 1234 3456 6789 营地 1 营地2 营地-3
我只想显示带有值的过滤器 营地 1 营地2 营地-3
如何在表格中只选择过滤器中的字母值?
解决方法
您的示例不清楚您要包含哪些内容以及要排除哪些内容。为了更好地解释,我举了一个详细的例子
Case-1 如果您想搜索/过滤 digits at start
,请使用此计算字段
REGEXP_MATCH([Field1],'^[0-9]')
Case-2 如果您想搜索 numbers anywhere
,请使用此
REGEXP_MATCH([Field1],'(.*)[0-9]')
Case-3 如果需要 digits only
REGEXP_MATCH([Field1],'^[0-9]+$')
case-4 alphabet at start
使用这个
REGEXP_MATCH([Field1],'^[:alpha:]')
所有比赛结果如下
注意结合 numbers anywhere
AND alphabet at start
可以仅过滤掉 case1、case2 和 case3。
祝你好运
,如果 Tableau 列包含数字和文本的混合,则该列将是文本列,并且所有内容都将被视为文本。这将问题减少到识别包含非数字值的特定行的问题。
这需要一些字符串操作和比较。如果您知道这些行中的内容结构是可预测的(例如,当行中存在非数字字符时,第一个字符始终是字母),那么一个简单的等式将对这些行进行过滤:
if ascii(left([Text And Numbers],1) )>57 then 'text' else 'number' END
这利用了以下观察结果:数字 9 的 ASCII 十进制代码是 57,并且大多数具有更高代码的 ASCII 字符是字母或标点符号(如果您的代码中除了数字、字母或标点符号之外没有其他任何内容,那么这是一个合理的假设)数据)。
显然,如果字母和数字可以出现在字符串中的任何位置,您需要一个更复杂的函数,但 Tableau 提供了使用正则表达式的选项,它可以编码更复杂的文本分析,就像任何字母字符一样出现在字符串中(有关适当的正则表达式的一些想法,请参阅 this)。