A. 如何用sql語言實現選出正確的電話號碼
Oracle資料庫操作
1,先選出正常11位號碼
select decode( sign(length(電話號碼)-11 ),0,電話號碼) from table1;
2,再選出5為號碼
select decode( sign(length(電話號碼)-5 ),0,電話號碼) from table1;
實際操作會有嚴格的約束,對於這種情況的避免,方式一在建表時通過約束來控制,將11位號碼和特殊號碼分開放兩張表裡。方式二是在前台通過JS腳本或其他驗證插入數據的合法性。這樣就避免你這種情況發生,所以你就別為此發愁了
B. SQL SERVER創建表時怎樣表示電話號碼
varchar類型就可以了,長度的話定義到20就可以了,另外就是看是手機號碼還是固話號碼了,可以設置成兩列,就是一個是手機,一個是固話。都是varchar類型就可以了。因為有的是兩種電話聯系方式都有
C. 利用sql 寫一個正則表達式 判斷 是否為手機號碼 11 位 + 數字... 變數@TelNo
我的想法和下面位朋友差不多,但是可以直接用:
在數據表中加需要約束的那一列的一個約束就行了!表達式如下:
where
([列名]
like
'13[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
注釋:[0-9]代表是選任一一個0-9中的數字作為當前位的數字。希望能對你有所幫助和啟發。
D. SQL添加約束出錯
你的【手機號碼】欄位中有不符合【你建的約束的數據】,把這樣的數據刪掉再建就可以了,為了方便起見。
1、先把數據轉存到另外一個表中:
select
*
into
tmp
from
號碼紀錄;
2、刪除原表數據
truncte
table
號碼紀錄;
3、增加check約束
alter
table
號碼紀錄
add
constraint
ck_手機號碼
check(手機號碼
like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]');
4、把符合條件的數據導回
insert
into
號碼紀錄
select
*
from
tmp
where
tmp.手機號碼
like
'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]';
5、刪除臨時表
drop
table
tmp;
---
以上,希望對你有所幫助。
E. 怎樣用SQL給電話號碼添加約束
設你的列叫pho_num
表叫tablename
建立一個名叫length_11的check類型約束
alter
table
tablename
add
constraint
length_11
check
(
len(pho_num)=11
)
F. 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');
G. sql server 定義電話號碼在0-9之間
使用sql語句。
使用sql語句能實現電話號碼限制在數字0-9。
在SQL Server 中,對於基本表的約束分為列約束和表約束。列約束是對某一個特定列的約束,包含在列定義中,直接跟在該列的其它定義之後,用空格分隔,不必指定列名;表約束與列定義相互獨立,不包括在列定義中,通常用於對多個列一起進行約束,與列定義用「,」分隔,定義表約束時必須指出要約束的列的名稱。