Netezza SQL 扫描功能
Netezza SQL scan function
问题是我有一个 table 的标识符列是 - 分隔的
(列值的示例可以是:TOM-XYZ12356-DIM34345-TE123456
要么
TOM-XYZR3455667AB-RXB75855-RYB434553)
我的主要重点是尝试提取标识符的第二部分。在上面的示例中,它将是(XYZ12356 和 XYZR3455667AB)。我在下面尝试了一些简单的操作,但一直收到错误 "Attribute '-' not found"
SELECT substr(identifier,1,Charindex("-",identifier) -1)
FROM TableA
也许我没有正确指定起点,或者我没有使用正确的功能。我可以使用 Charindex 以外的其他功能吗?
如果您只需要 select 标识符的第二部分,这行得通吗?
select substr(('TOM - XYZ12356 - DIM34345 - TE123456'), 6, 9)
结果只是第二部分:
'XYZ12356'
您可以使用 SUBSTR 和 INSTR 来获得您想要的结果。
select * from tableA;
COL1
--------------------------------
TOM-XYZ12356-DIM34345-TE123456
(1 row)
SUBSTR 的工作方式与您预期的一样(尽管您的参数似乎乱序了)并且您可以使用 INSTR 在第一个 '-' 之后提供起始字符,然后通过减去的位置来计算 SUBSTR 长度第一个'-'从第二个'-'的位置开始。
SELECT SUBSTR(col1, instr(col1,'-',1,1)+1 , instr(col1,'-',1,2) - instr(col1,'-',1,1) -1 )
FROM tableA;
SUBSTR
----------
XYZ12356
(1 row)
检查 SUBSTR and INSTR here 的语法。
问题是我有一个 table 的标识符列是 - 分隔的 (列值的示例可以是:TOM-XYZ12356-DIM34345-TE123456 要么 TOM-XYZR3455667AB-RXB75855-RYB434553)
我的主要重点是尝试提取标识符的第二部分。在上面的示例中,它将是(XYZ12356 和 XYZR3455667AB)。我在下面尝试了一些简单的操作,但一直收到错误 "Attribute '-' not found"
SELECT substr(identifier,1,Charindex("-",identifier) -1)
FROM TableA
也许我没有正确指定起点,或者我没有使用正确的功能。我可以使用 Charindex 以外的其他功能吗?
如果您只需要 select 标识符的第二部分,这行得通吗?
select substr(('TOM - XYZ12356 - DIM34345 - TE123456'), 6, 9)
结果只是第二部分: 'XYZ12356'
您可以使用 SUBSTR 和 INSTR 来获得您想要的结果。
select * from tableA;
COL1
--------------------------------
TOM-XYZ12356-DIM34345-TE123456
(1 row)
SUBSTR 的工作方式与您预期的一样(尽管您的参数似乎乱序了)并且您可以使用 INSTR 在第一个 '-' 之后提供起始字符,然后通过减去的位置来计算 SUBSTR 长度第一个'-'从第二个'-'的位置开始。
SELECT SUBSTR(col1, instr(col1,'-',1,1)+1 , instr(col1,'-',1,2) - instr(col1,'-',1,1) -1 )
FROM tableA;
SUBSTR
----------
XYZ12356
(1 row)
检查 SUBSTR and INSTR here 的语法。