1

我正在选择一个电子邮件地址,但我不想显示完整的电子邮件。只有“@”之前的部分。怎么剪啊。我知道如何只显示一定数量的字符或数字。但是我如何指定只显示到'@'符号。

谢谢你。

4

1 回答 1

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.

如果您有不支持的旧版本 Informix CHARINDEX(),您将被迫逐个字符地遍历字符串,直到找到“@”符号。

于 2015-02-02T00:40:41.593 回答