『壹』 sql server 定義電話號碼在0-9之間
使用sql語句。
使用sql語句能實現電話號碼限制在數字0-9。
在SQL Server 中,對於基本表的約束分為列約束和表約束。列約束是對某一個特定列的約束,包含在列定義中,直接跟在該列的其它定義之後,用空格分隔,不必指定列名;表約束與列定義相互獨立,不包括在列定義中,通常用於對多個列一起進行約束,與列定義用「,」分隔,定義表約束時必須指出要約束的列的名稱。
『貳』 sql的幾個檢查約束
電話號碼的格式必須為xxxx-xxxxxxxx或手機號11位
alter 表名 add constraint ck_欄位名 check (欄位 like '[0-9][0-9][0-9][0-9]_[0-9]......' or len(欄位)=11)
銀行卡前 8位 1010 357 xxxx xxxx 每格4個空一個格
alter 表名 add constraint ck_欄位名 check (欄位 like '1010 357 [0-9][0-9]...' )
身份證號是18位且唯一的
alter 表名 add
constraint ck_欄位名 check (len(欄位名)=18 ),
constraint uk_欄位名 unique(欄位名)
開始開戶密碼默認為6個8
alter 表名 add constraint df_欄位名 default(『888888』)for 欄位名
卡號,外鍵,可重復索引
開戶日期默認為當前日期`
alter 表名 add constraint df_欄位名 default(getdate())for 欄位名
貨幣默認為人民幣
alter 表名 add constraint df_欄位名 default(『RMB』)for 欄位名
余額不能少1元,否則銷戶
alter 表名 add
constraint ck_欄位名 check (欄位名>1)
//給你寫這么多,可一分都沒有???
『叄』 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');
『肆』 利用sql 寫一個正則表達式 判斷 是否為手機號碼 11 位 + 數字... 變數@TelNo
在數據表中加需要約束的那一列的一個約束就行了!表達式如下:
CHECK=([列名] like '13[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
希望我的回答對你有所幫助,謝謝採納!!
『伍』 我現在有一堆電話號碼,但是前面都多了幾位,我只要保留後11位,在用sql語句怎麼做
截取字元啊 subStr(),各種資料庫的sql都有這個函數,但函數名字會有差異,自己查一下