根据电话号码从数据库中选择

时间:2011-11-29 05:54:45

标签: sql oracle oracle11g

几天后我有一个考试(期中考试),所以我试图执行所有可能在期中考试的考试,假设我们有员工表,其中的电话号码是以这种形式给出的abc.edf.ghi (所有这些都是数字而非字符串),我怎么能列出这些电话号码包含edf?的员工我不认为我们可以使用子字符串函数,因为它是数字,我是否正确?另外我不能用c ++中的总和来执行除法(除以100,mod 100等等)所以请帮助我,对不起如果我的问题太多废话了。我只需要练习。

3 个答案:

答案 0 :(得分:1)

不要误以为电话号码是号码。电话号码是一个字符串,通常主要由数字组成。

想象一下以零为开头的电话号码。如果你将它存储为一个数字,它们将被截断,而它们可能很重要,可能会产生影响。将其存储为字符串使其安全。

此外,将其存储为字符串使您可以使用SUBSTR和其他类似命名的函数,并执行大致相同的操作,这可以解决您的问题。

答案 1 :(得分:1)

Oracle says substr仅用于字符串,但您也可以将substr用于定义为NUMBER数据类型的列。

(假设PHONENUMBERCOLUMN的格式为abc.edf.ghi)

select * from YOURTABLE where substr(PHONENUMBERCOLUMN,5,3)='edf'

注意:如果数据类型不是NUMBER,则应为'edf',而不是edf。始终使用单引号是安全的,无论列的数据类型是数字还是字符串(char,varchar,varchar2等)。

答案 2 :(得分:0)

在MySQL中,您可以尝试SUBSTRING()功能。如果电话号码采用您显示的格式,则必须是varchar而不是INT。

对于Oracle,请使用substr()