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