⑴ 如何用oraclesql查询手机、邮箱格式不正确
写个过程,使用正则表达式来描述手机号和邮箱模式,然后用regexp_like函数来搜索符合模式的手机号和邮箱。
⑵ SQL语句中,我想要截取电子邮箱地址@之前的字符,该用什么函数。谢谢
第一个是字符串定位的函数,SQLSERVER使用CHARINDEX('@', EMAIL),ORACLE使用INSTR(EMAIL,'@')。知道了这个符号的位置,那么截取之前的部分就可以得到了。当然,开头不能有除了邮箱之外的其他字符串了。
SQLSERVER可以使用:SELECT SUBSTRING(EMAIL,1, CHARINDEX('@', EMAIL) - 1) FROM 表名
ORACLE使用:SELECT SUBSTR(EMAIL,1, INSTR(EMAIL,'@') - 1) FROM 表名
⑶ SQL查询语句,如何查询 一个邮箱的域名,比如一个邮箱为[email protected],使用查询语句如何返回163.com
select substring(email_address, charindex('@',email_address,1)+1,len(email_address) - charindex('@',email_address,1)) as domain
from tablename
⑷ SQL语句中,我想要截取电子邮箱地址@之前的字符
SELECT LEFT( 电子邮箱 ,CHARINDEX('@', 电子邮箱 )-1) FROM 表
其他的栏位自己加,表名改为自己的
⑸ ERP系统中,如何用SQL语法查询以下内容 可在线回复或回复我邮箱:[email protected]
select itemCode,decode(month,1,sum(qty),null) as "1月份",
decode(month,2,sum(qty),null) as "2月份",
decode(month,3,sum(qty),null) as "3月份",
decode(month,4,sum(qty),null) as "4月份",
decode(month,5,sum(qty),null) as "5月份",
decode(month,6,sum(qty),null) as "6月份",
decode(month,7,sum(qty),null) as "7月份",
decode(month,8,sum(qty),null) as "8月份",
decode(month,9,sum(qty),null) as "9月份",
decode(month,10,sum(qty),null) as "10月份",
decode(month,11,sum(qty),null) as "11月份",
decode(month,12,sum(qty),null) as "12月份"
from
(select itemCode,month,sum(qty) from table group by itemCode,month)
⑹ sql查询。。。。。
select 学好,姓名,联系电话,家庭地址 from 什么表 where 班级=0701
select 学好,姓名,联系电话 from 什么表 where 姓名=‘张三’
select count(学生) from 什么表 where 入学年份=2011
select max(班级人数) from 什么表 where 上课状态=‘上课’
......
我就不全部写了 你也知道 其实这很简单,随便网络一下都有的。
http://www.w3school.com.cn/sql/ 可参考这些语法。
前面简单的查询直接根据条件查询即可。
后面有什么状况下的可以有sql函数来得到.
自己学习 记忆深刻
⑺ 如何用sql语句检测邮箱格式
自己没亲自写过 这是引用别人的 先申明一下 使用正则表达式比较好
CREATE FUNCTION F_EMAIL
(
@EMAIL VARCHAR(50)
)
RETURNS INT --返回1是正确;返回0是错误
BEGIN
DECLARE @VALUE INT,@LEN INT
DECLARE @TMP VARCHAR(50)
DECLARE @CHECK1 VARCHAR(50)
DECLARE @CHECK2 VARCHAR(50)
DECLARE @CHECK3 VARCHAR(50)
SET @TMP=RTRIM(LTRIM(@EMAIL))
SET @LEN=LEN(@TMP)
IF @LEN-LEN(REPLACE(@TMP,'@',''))=1 AND @LEN-LEN(REPLACE(@TMP,'.',''))>=1 AND CHARINDEX('@',@TMP)<>1
BEGIN
SET @CHECK1=LEFT(@TMP,CHARINDEX('@',@TMP)-1)
SET @CHECK2=STUFF(@TMP,1,CHARINDEX('@',@TMP),'')
SET @CHECK3=STUFF(@CHECK2,1,CHARINDEX('.',@CHECK2),'')
SET @CHECK2=LEFT(@CHECK2,CHARINDEX('.',@CHECK2)-1)
IF LEN(@CHECK1)>0 and LEN(@CHECK2)>0 AND LEN(@CHECK3)>0
BEGIN
IF PATINDEX('%[^a-zA-Z0-9._-]%',@CHECK1)>0
SET @VALUE=0
ELSE
BEGIN
IF PATINDEX('%[^a-zA-Z0-9_-]%',@CHECK2)>0
SET @VALUE=0
ELSE
BEGIN
IF CHARINDEX(UPPER(@CHECK2),UPPER('gmail,QQ,163,sina,yahoo'))>0
BEGIN
IF PATINDEX('%[^a-zA-Z0-9._-]%',@CHECK3)>0
SET @VALUE=0
ELSE SET @VALUE=1
END
ELSE SET @VALUE=0
END
END
END
ELSE SET @VALUE=0
END
ELSE SET @VALUE=0
RETURN @VALUE
END
--测试
create table tb
(
id int identity,
email varchar(50),
CONSTRAINT chk_email CHECK (dbo.F_EMAIL(email)=1)
)
insert into tb SELECT '[email protected]'
insert into tb SELECT '[email protected]'
insert into tb SELECT '[email protected]'
insert into tb SELECT '[email protected]'
insert into tb SELECT 'AS@[email protected]'
/*
(所影响的行数为 1 行)
服务器: 消息 547,级别 16,状态 1,行 1
INSERT 语句与 COLUMN CHECK 约束 'chk_email' 冲突。该冲突发生于数据库 'Test',表 'tb', column 'email'。
语句已终止。
(所影响的行数为 1 行)
(所影响的行数为 1 行)
服务器: 消息 547,级别 16,状态 1,行 1
INSERT 语句与 COLUMN CHECK 约束 'chk_email' 冲突。该冲突发生于数据库 'Test',表 'tb', column 'email'。
语句已终止。*/
SELECT * FROM TB
/*
id email
----------- --------------------------------------------------
1 [email protected]
3 [email protected]
4 [email protected]
(所影响的行数为 3 行)
*/
⑻ 求一个sql批量更新语句 内容是这样不同的名字需要查找,更新对应名字的电话,邮箱,手机
比如A表,B表,列一样,B表数据新,要更新到A表:
姓名, 电话, 邮箱, 手机
可以这么写(假设用姓名关联):
update a set 电话 = (select 电话 from b where a.姓名=b.姓名),
邮箱 = (select 邮箱 from b where a.姓名=b.姓名),
手机 = (select 手机 from b where a.姓名=b.姓名)
where exists (select 1 from b where a.姓名=b.姓名)
这个是比较通用的写法,
不同的数据库还有各自特殊的写法,
比如sqlserver 可以用update from
⑼ sql 语句中 怎么查询邮箱地址 $s="SELECT * FROM `address` WHERE `address`='[email protected]'";
$s="SELECT * FROM 表名 WHERE address='[email protected]'"
⑽ 如何从SQL数据库文件中,提取邮箱地址,并存入文本文件格式
数据库文件需要数据库引擎驱动的,若你使用的是Access数据库mdb格式的,首相要使用一种程序语言连接,通过代码来获取数据库然后持久化文件。