仅显示字符串的一部分

时间:2015-02-01 21:18:26

标签: informix 4gl

我选择了一个电子邮件地址,但我不想显示完整的电子邮件。只有' @'之前的部分。我怎么能削减它。我知道如何只显示一定数量的字符或数字。但是我如何指定只显示直到' @'符号。

谢谢。

1 个答案:

答案 0 :(得分:1)

Informix SQL的最新版本具有CHARINDEX()功能,可用于隔离“@”符号出现的位置:

SELECT LEFT(email_addr, CHARINDEX('@', email_addr)-1) 
如果找不到,

CHARINDEX()将返回0,否则将返回定位字符串的序号位置。我的测试发现LEFT()没有抱怨传递0或-1,因此按原样执行此操作是安全的,您不必先验证是否从CHARINDEX()返回了某些内容。

CREATE TEMP TABLE ex1
(
  email_addr VARCHAR(60)
) WITH NO LOG;

INSERT INTO ex1 VALUES ('ret@example.com.au');
INSERT INTO ex1 VALUES ('emdee@gmail.com');
INSERT INTO ex1 VALUES ('unknown');
INSERT INTO ex1 VALUES (NULL);
INSERT INTO ex1 VALUES ('@bademail');

SELECT LEFT(email_addr, CHARINDEX('@', email_addr)-1) FROM ex1

...生产:

(expression)

ret
emdee


5 row(s) retrieved.

如果你有一个不支持CHARINDEX()的旧版Informix,你将被迫逐字逐句地遍历字符串,直到找到'@'符号。