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%'
我有一个 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%'