A. sql中,电话号码应该用什么数据类型
可以用字符形式!因为如果有区号那第一个数字可能是0,所以用字符形式
B. 在sql中如何实现电话号码中间的4位数字转换成特殊字符
不同的数据库做法不同
replace就是替换,虽然是字符的替换,不过你的特殊字符应该不是数字吧,所以你的号码应该存成字符型,不然假设你的替换字符是xxxx,可是这个可是没办法插入数字格式的。
你说的中间四位怎么定义,是类似xxx xxxx xxxx种种,还是XX YYYY xx这种,如果是前面那种那就用定位比如substr,不知道你是什么数据库,只能用oracle的方式写,可以根据自己数据库自行查找相应函数
比如,replace(字符串,substr(字符串,4,4),'XXXX')
这样的话,假设源字符串为001 1101 1100,那么就会变为001 xxxx 1100
当然,这个语句本身是有问题的,如果刚巧你的号码比较特殊,比如001 0101 0101,那么可能就变成了0XXXX XXXX 01,或者001 1001 1001 那么就是001 XXXX XXXX
那么怎么只更换中间四位,其他位置有特殊的也不动呢?
有两个办法
(1)分开显示人然后合并,比如 selelct substr(字符串,1,3)||‘XXXX’|| substr(字符串,-1,4) (本写法是oracle的,其他数据库的连接符号各有不同,情自行查找)
(2)replace全部替换,其实合作前面的差不多,比如replace(字符串,substr(字符串,1), substr(字符串,1,3)||‘XXXX’|| substr(字符串,-1,4))
C. SQL中查询各职员电话号码所在区号以及具体的电话号码
用substring函数
用法如:substring('abcdefg',3,1)就得到d,指从abcdefg中的第三个后开始提取一位
最后的1可以省略,省略就是提取其后的全部字符
D. SQL server 2000数据库中怎么查询一个表中电话号码的末位数拜托各位大神
比如电话表(Tell)的列,姓名表(Name),电话表(number)
就可以这样写
select
Name
form
tell
where
number
like
%8''
E. 我现在有一堆电话号码,但是前面都多了几位,我只要保留后11位,在用sql语句怎么做
截取字符啊 subStr(),各种数据库的sql都有这个函数,但函数名字会有差异,自己查一下
F. sql 查询 一个电话号码,怎么样查找后四位不带4的电话号码
select * from user_phone where substr(电话号码,-1,4) not like '%4%'
通过substr函数截取字段后四位,进行范围匹配,筛选出后四位不含4的记录
G. 在sql中学生情况表中,查询电话号码第5位为3和5的记录信息
select * from 表名 where datepart('yyyy',age)=1982 and tel like '_____[35]%'
age为年龄字段,tel为电话字段,试试吧。
H. 如何SQL让电话号码后四位自动编号,急,谢谢了
你试下把前几位当一个字段,后4位再建个字段,类型位自动编号,
最后用getString()方法读取出来,把这2个字段相加就是电话号码了.
I. sql中如何查询电话号码第7位为4和6的记录信息
SUBSTR(电话,7,1) in('4','6')
J. sql 2000,要求限制电话号码十一位,只能是数字~数据类型char(12),约束表达式怎么写
SQL Server 2000 没有, 就拿个 SQL Server 2005 的来凑个数。
不大清楚 SQL Server 2000 里面,有没有 PATINDEX 函数了。
CREATE TABLE #temp(
test char(12)
CONSTRAINT chk_test
CHECK (
LEN(RTRIM(test)) = 11 AND
PATINDEX('%[^0-9]%', RTRIM(test)) = 0)
);
-- 失败 长度不符合,且是英文
INSERT INTO #temp VALUES ('a');
-- 失败 长度不符合
INSERT INTO #temp VALUES ('1');
-- 失败 长度不符合
INSERT INTO #temp VALUES ('123456789012');
-- 失败 长度符合 但是英文
INSERT INTO #temp VALUES ('1234567890a');
-- 成功
INSERT INTO #temp VALUES ('12345678901');