Select 变量 x 以 65 开头的行 (teradata)

Select the rows where variable x starts with 65 (teradata)

我有一个 table,其中包含一个名为 x 的列,其中包含我所有观察结果的数字。我现在只想 select 以 65 开头的变量。

我试过:

SELECT * FROM table 
WHERE x REGEXP '^[65]'

和 like/isnumeric 的不同版本,但我想不出一个干净的出路。

您可以使用 like 或 left 来查找以前缀开头的

SELECT * FROM TABLE_NAME WHERE COLUMN_NAME LIKE '65%'

SELECT * FROM TABLE_NAME WHERE LEFT(COLUMN_NAME, 2) = '65'

已测试并正常工作。

SELECT * FROM someTable WHERE concat("_",x) like '_65%'

如果您的 table 非常大,可能会很慢,因为它不使用索引并执行完整的 table 扫描。

如果这实际上是 Teradata DBMS,您的初始查询将导致错误消息,因为没有 REGEXP(但有 REGEXP_SIMILAR)。

您不需要正则表达式来比较前两位数字。如果 x 的数据类型是数字,您必须先将其转换为字符串:

WHERE TRIM(x) LIKE '65%'
WHERE CAST(x AS VARCHAR(20)) LIKE '65%'

如果它是 VarChar,您可能会有一些前导空格(这真的很糟糕):

WHERE TRIM(x) LIKE '65%'