数据库SQL语句:将电话号码这一列里面按照所含数字6的个数分类,如含1个6,2个6等这个SQL查询语句怎么写 求一条sql语句,把数据库表中一个字段里面的数据数字和文字都...

作者&投稿:徭寒 (若有异议请与网页底部的电邮联系)
尝试写一个,未必能用要测试的。
首先确定电话号码是字符型的,如果不是那么就转换一下。
然后用

select 电话号码,
case when 电话号码 ='6666666' then 1
when 电话号码 like '%6%6%6%6%6%6%' then 2
when 电话号码 like '%6%6%6%6%6%' then 3
when 电话号码 like '%6%6%6%6%' then 4
when 电话号码 like '%6%6%6%' then 5
when 电话号码 like '%6%6%' then 6
when 电话号码 like '%6%' then 7
else 8 end 带6的分组 from table
我这里假设是7位的电话号码,如果是八位可能出现66666666,那么前面就再加一个等于八个6的(记得是前面不是后面,如果是后面那么就出不来了),7个6的改为like语句。然后如果再想分组就根据标记(也就是1,2,3,4,5,6,7)分组就可以了。不过这个要测试的,我只是觉得这样可行。

请问SQL中如何将1列是6个数字的字段(举例:135313)转换成时间格式(13:53:13)~

字符串截取,然後转换成CHAR 相加:
select substring('135313',1,2)+':'+substring('135313',3,2)+':'+substring('135313',5,2)

2 命名规则
2.1 表名
XXX相关表以r_作为前缀,YYY相关表以t_作为前缀。如r_acc 、t_bcc。
后台表名尽量与前台表名相同,后台独有的表应以_b作为后缀。如r_gggd_b。
命名应尽量反映存储的数据内容。
2.2 视图名
视图以v_作为前缀。由于前台无视图,故不需加_b。
命名应尽量体现各视图的功能。
2.3 触发器名
触发器名为相应的表名加上后缀,Insert触发器加'_i',Delete触发器加'_d',Update触发器加'_u',如:r_bch_i,r_bch_d,r_bch_u。
2.4 存储过程名
存储过程应以'sp_'开头,后续部分主要以动宾形式构成,并用下划线分割各个组成部分。如增加BSC机架的DRT单板的存储过程为'sp_ins_board_drt'。
2.5 变量名
变量名采用小写,若属于词组形式,用下划线分隔每个单词,如@my_err_no。
2.6 命名中其他注意事项
以上命名都不得超过30个字符的系统限制。
变量名的长度限制为29(不包括标识字符@)。
数据对象、变量的命名都采用英文字符。禁止使用中文命名。

3 编程结构和描述
SQL SERVER系统中,一个批处理是从客户传给服务器的一个完整的包,可以包含若干条SQL语句。批处理中的语句是作为一组去进行语法分析、编译和执行的。触发器、存储过程等数据对象则是将批处理永久化的方法。
3.1 注释
注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将大大增加文本的可读性和可维护性。本规范建议:
1、 注释以英文为主。
实际应用中,发现以中文注释的SQL语句版本在英文环境中不可用。为避免后续版本执行过程中发生某些异常错误,建议使用英文注释。
2、 注释尽可能详细、全面。
创建每一数据对象前,应具体描述该对象的功能和用途。
传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。
3、 注释语法包含两种情况:单行注释、多行注释
单行注释:注释前有两个连字符(--),最后以行尾序列(CR-LF)结束。一般,对变量、条件子句可以采用该类注释。
多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。
4、 注释简洁,同时应描述清晰。
3.2 函数注释:
编写函数文本--如触发器、存储过程以及其他数据对象--时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:
/************************************************************************
*name : --函数名
*function : --函数功能
*input : --输入参数
*output : --输出参数
*author : --作者
*CreateDate : --创建时间
*UpdateDate : --函数更改信息(包括作者、时间、更改内容等)
*************************************************************************/
CREATE PROCEDURE sp_xxx

3.3 条件执行语句if…else
条件语句块(statenemt block,以 begin…end为边界)仅在if子句的条件为真时才被执行。为提高代码的可读性,建议嵌套不多于5层。还有,当嵌套层次太多时,应该考虑是否可以使用case语句。
3.4 重复执行while和跳转语句goto
需要多次执行的语句,可以使用while结构。其中,控制while循环的条件在任何处理开始之前需要先执行一次。循环体中的保留字break无条件的退出while循环,然后继续处理后续语句;保留字continue重新计算while条件,如果条件为真,则从循环开始处重新执行各语句。
使用跳转语句goto和标签label也可以方便地实现循环和其他更灵活的操作。SQL SERVER仅具有单通道语法分析器,因此不能解析对尚未创建的对象所做的前向参考。换言之,跳转到某标签的后续语句应该是可执行的(如不存在可能尚未创建的数据对象)。
3.5 书写格式
数据库服务器端的触发器和存储过程是一类特殊的文本,为方便开发和维护,提高代码的易读性和可维护性。规范建议按照分级缩进格式编写该文本。
顺序执行的各命令位于同一级;条件语句块(statenemt block,以 begin…end为边界)位于下一级,类推。
SQL语句是该文本的主体。为适应某些教复杂的用户需求,SQL语句可能比较庞大。为方便阅读和维护,规范建议按照SQL语句中系统保留字的关键程度再划分为三级。具体分级请参照下表。其中,非系统保留字(如字段名、数据表名、标点符号)相对本级保留字再缩进一级。多个连续的非保留字可以分行书写,也可以写在同一行。当WHERE包含的条件子句教复杂时,应该每行只写一个条件分句,并为重要的条件字句填写单行注释。
在保证基本缩进格式的前提下,可以通过对齐某些重要关键字(如条件关键字AND、OR,符号 = 、 等)来进一步提高文本的易读性和可维护性。
相邻两级的缩进量为10个空格。这也是ISQL编辑器默认的文本缩进量。另外,在ISQL编辑器中,一个TAB键也相当于10个空格。

注:按照功能,四类SQL语句(SELECT、INSERT、UPDATE、DELETE)的关键字可以划分为三类:主关键字、次关键字、一般关键字。如下表所示:
主关键字 次关键字 一般关键字
SELECTINSERT (INTO)UPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM语句中的SELECT和FROM ANDORBETWEENINLIKE


3.6 字体
系统保留字应大写,包括系统公共变量等。其他字符(如用户自定义变量、用户自定义数据对象名)小写。
需要特殊强调的部分可以大写。
一条完整注释语句的首字符应大写。对某变量、某条件字句的注释可以全部使用小写。

通过下一节中生成表r_a的删除触发器的实例可以部分说明对象命名、注释、基本书写格式和字符大小写方面的一些注意事项。

4 触发器编程规范
4.1 范例
下面通过一个例子,说明触发器编程中应遵守的规范:

/* delete related r_a according to deleted table */
CREATE TRIGGER r_a_d ON r_a
FOR DELETE
AS
IF @@ROWCOUNT = 0 -no rows deleted
RETURN

/* delete r_b table related to deleted table */
DELETE r_b
FROM r_b b, deleted d
WHERE b.id=d.id

IF @@ERROR != 0
BEGIN
RAISERROR("Error occurred deleting related records", 16, 1)
ROLLBACK TRAN
END

RETURN

作以下几点说明:
1. 检查是否有行被修改。注意:不论数据是否被修改,触发器都会引发,执行情况取决于T-SQL语句的执行,而和任何潜在的where子句是否执行无关。
2. 因为被删除行在该表中不再可用,所以应在被删除的表中查看。
3. 检查T-SQL语句的返回代码,以捕获任何出错条件。
4.2 事务过程中的触发器
1. 触发器内的rollback将所有工作返回至最外层的begin tran,完成触发器内的处理并异常终止当前的批处理。
2. 不可以从触发器内部返回至某个已命名的事务过程,这将产生运行错误,挂起所有工作并终止批处理。
5 存储过程编程规范
5.1 带有参数的执行
在执行存储过程时,可以通过名字来制定参数,这样可以用任何顺序传递参数,而且自动起到注释的作用,因此建议编程时使用这种方法。
5.2 缺省参数值
把参数的缺省值定为null,这是捕获在过程内调用存储过程所产生的错误的常用方法,不应让标准服务器消息报告参数丢失。在给定缺省之后,可以校验该缺省值并在存储过程内采取措施。
注意,当附值SELECT语句不返回行时,局部变量将保持在SELECT语句执行之前所具有的值。建议使用系统提供的某些全局变量(如@@ROWCOUNT)检测SELECT返回的结果。
5.3 返回值
每个存储过程自动返回一个整数型的状态值:成功完成时返回0,而返回-1~-99表示SQL Server检测到了错误。以下为SQL Server系统常用的返回状态码:
值 含义
0 Procedure was executed successfully
?-1 Object missing
?-2 Datatype error occurred
?-3 Process was chosen as deadlock victim
? -4 Permission error occurred
?-5 Syntax error occurred
? -6 Miscellaneous user error occurred
?-7 Resource error, such as out of space, occurred
? -8 Non-fatal internal problem encountered
?-9 System limit was reached
??-10 Fatal internal inconsistency occurred
??-11 Fatal internal inconsistency occurred
??-12 Table or index is corrupt
??-13 Database is corrupt
?-14 Hardware error occurred
在程序中,用return语句可指定大于0或小于-99的返回值,调用程序可以设置局部变量接收和检查返回状态。
5.4 存储过程和事务处理
如果事务处理在存储过程返回时的嵌套层次与执行时的层次不同,SQL Server会显示信息提示事务处理嵌套失控。因为存储过程并不异常终止该批处理,在执行和确认随后的语句时,过程内的rollback tran 会导致数据完整性损失。
在编写存储过程时,应遵守以下原则:
1. 过程对@@trancount应无净改变。
2. 仅当存储过程发出begin tran语句时,才发出rollback tran。
5.5 其他注意事项
存储过程应该坚实可靠的,因为它们是驻留在服务器中,被频繁使用的。应仔细检查参数的有效性,并在有问题时返回出错信息。应确保参数的数据类型和被比较的栏的数据类型匹配,从而避免数据类型匹配错误。在每个SQL语句之后要检查@@error。

6 数据对象的国际化
6.1 关于数据对象的命名
数据对象和变量的命名一律采用英文字符。禁止使用中文命名。其他命名注意事项和规范请参考2命名规则。
6.2 关于RAISERROR
SQL SERVER 系统的RAISERROR命令能够把某个出错情况返回给调用过程,这对说明调用过程的执行情况很有必要;同时可以部分避免客户端的冗余操作。另外,结合系统存储过程sp_addmessage和sp_dropmessage可以方便实现数据对象在SQL SERVER端的国际化。
SQL SERVER的MASTER数据库中有错误信息数据表sysmessages,专门用于存储系

数据库SQL语句:将电话号码这一列里面按照所含数字6的个数分类,如含1个...
答:when 电话号码 like '%6%6%' then 6 when 电话号码 like '%6%' then 7 else 8 end 带6的分组 from table 我这里假设是7位的电话号码,如果是八位可能出现66666666,那么前面就再加一个等于八个6的(记得是前面不是后面,如果是后面那么就出不来了),7个6的改为like语句。然后如果再想分组就...

SQL语句比对,我有两个表,A表手机号码 工号 B表只有手机号码 我想将B...
答:select * from A where [手机号码] in (select distinct([手机号码]) from B)

SQL数据库语句大全
答:EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份BACKUP DATABASE pubs TO testBack 4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表:A:create table tab_new like tab_o...

sql 我的数据库有三张表 信息表 电话号码表 通话记录表 求大神帮忙写出...
答:SELECT (SELECT TOP 1 通话记录表.通话时间,通话记录表.电话号码 FROM 通话记录表 LEFT JOIN 电话号码表 ON 通话记录表.电话号码=电话号码表.电话号码 WHERE 电话号码表.用户ID=信息表.用户ID ORDER BY 通话记录表.通话时间 DESC) FROM 信息表 WHERE 用户名='输入的用户名'...

sql数据库一道试题帮忙做做
答:--2) 修改学生表的结构,添加一列信息,学历 education alter table student add education nvarchar(10) NULL --3) 修改学生表的结构,删除一列信息,家庭住址 alter table student drop column address --5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”update student set ...

在sql中如何实现电话号码中间的4位数字转换成特殊字符
答:当然,这个语句本身是有问题的,如果刚巧你的号码比较特殊,比如001 0101 0101,那么可能就变成了0XXXX XXXX 01,或者001 1001 1001 那么就是001 XXXX XXXX 那么怎么只更换中间四位,其他位置有特殊的也不动呢?有两个办法 (1)分开显示人然后合并,比如 selelct substr(字符串,1,3)||‘XXXX’...

如何利用SQL语句将表A里的一列数据插入表B中?
答:1.新增一列:alter table B add 联系电话 varchar(20)2.更新表 B :update b set b.联系电话=a.联系电话 from a,b where a.姓名=b.姓名 and a.身份证号码=b.身份证号码

sql server 定义电话号码在0-9之间
答:使用sql语句。使用sql语句能实现电话号码限制在数字0-9。在SQL Server 中,对于基本表的约束分为列约束和表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其它定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与...

用SQL语句查询南宁133开头的号码,急急!!!
答:这个主要还是如何关联,查询我觉得你应该会 select from 号段 join 号码 on 号段.HD = left(号码.电话,7)where 号段.地点 = '南宁'

ORACLE中,怎么用SQL语句查询一个电话号码中含有连续7个字符都为“1...
答:如果你是要模糊的查询 连续7个 任意数字的, 也就是 7个1 , 或者 7个2 , 或者 7个3...SQL> SELECT 2 * 3 FROM 4 test 5 WHERE 6 REGEXP_LIKE(REVERSE(TEL), '(\d)\1\1\1\1\1\1');NAME TEL--- ---张三 1301111111932王五 1391111111102张...