A. 在pl/sql里建一表,其中有些欄位的值要限定,比如項目名稱被限定為:項目1,項目2,項目3;怎麼寫代碼啊
建立一個取值范圍表(碼表)作為主表,然後再建立你需要的表(作為從表)。在建表時需要限定的欄位作為外鍵與碼表的欄位相互關聯。這樣每次修改表的這些欄位時,自動去校驗該值是否碼表中存在的值。
B. sql 月份排序時為什麼是從10月 11月 12月 1月......而不是1月 2月 …10月 1
摘要 Sql server資料庫的情況下
C. 這樣的sql語句怎麼寫:表名A ,欄位名A_1,A_1欄位裡面只有數值1或者2,現在想把是1的顯示為B,2顯示為S
使用如下語句即可:
select case when a_1 = '1' then 'B' when a_1 = '2' then 'S' else a_1 end as a_1 from a;
D. sqlserver2005怎麼設置某欄位取值只能為為0和1
可以用函數嵌套,試一下用 select cast(rand(checksum(newid()))*2 as int)
給你看個例子
create table id (id int primary key not null identity,b as cast(rand(checksum(newid()))*2 as int) )
alter table id add name varchar(20)
insert into id(name)values('掌聲呢')
insert into id(name)values('掌聲呢')
insert into id(name)values('掌聲呢')
select * from id
E. 用sql語句檢索學生表中所有出生月份為單數的記錄
select * from 學生表 where month(生日)%2 = 1
其中「學生表」是表名;「生日」是記錄學生生日的欄位名。
「month( )」是求日期中的月份的函數。
「%」是求余數的運算符, month(生日)%2 就是求生日中月份除以2的余數,余數為1就是奇數。
F. SQL中規定某列值只能是0或者1的約束該怎麼寫
SQL CHECK約束。
CHECK約束用於限制列中的值的范圍。
如果對單個列定義CHECK約束,那麼該列只允許特定的值。
如果對一個表定義CHECK約束,那麼此約束會在特定的列中對值進行限制。
--刪除表
drop table temp;
--創建表
CREATE TABLE temp (flag NUMBER(1));
--增加約束
ALTER TABLE tempADDCONSTRAINTck_temp_flag CHECK
(flag=1 or flag=0);
--測試效果版
insert into temp values(1);
insert into temp values(0);
insert into temp values(1);
--測試效果(約束禁止插入數據),提示權:違反檢查約束條件
insert into temp values(2);
insert into temp values(3);
SQL CHECK Constraint on CREATE TABLE。
下面的SQL在"Persons"表創建時為"Id_P"列創建CHECK約束。CHECK約束規定"Id_P"列必須只包含大於0的整數。
My SQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)
(6)sql月份欄位只能為1或2擴展閱讀:
不同資料庫的約束寫法:
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULLCHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
如果需要命名CHECK約束,以及為多個列定義CHECK約束,請使用下面的SQL語法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
SQL CHECK Constraint on ALTER TABLE.
如果在表已存在的情況下為"Id_P"列創建CHECK約束,請使用下面的SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (Id_P>0)
如果需要命名CHECK約束,以及為多個列定義CHECK約束,請使用下面的SQL語法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
撤銷CHECK約束。
如需撤銷CHECK約束,請使用下面的SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
G. SQL語句如何篩選 欄位1 欄位2 01 是 02 是 01 否 02 是
select * from (select 欄位1 from 表1 where 欄位2='是' group by 欄位1) A where A.欄位1 not in (select 欄位1 from 表1 where 欄位2 like '%否%');
H. SQL 查一段時間之間的數據 比如1月份到2月份的數據
也不知道是不是你想要的內容
思路:單獨用SQL求服務申告總數量(scum)和完成數量(success)然後顯示到一個表裡。
select
'服務申告經理統計' as title,
(
select count(*) from sr
where statusdate between '2011-01-18' and '2011-02-19'
) as scum,
(
select count(*) from sr
where statusdate between '2011-01-18' and '2011-02-19' and closetime_mep is null
)success
I. SQL語句中 招標方式代號只能夠為1或者2,其中1表示"公開",2表示「邀請」
不知道你啥意思,你是要如果你的欄位是1,2就查詢對應顯示?
如果是這樣的話,直接用case語句就可以了
select case when 欄位=1 then '公開' when 欄位=2 then '邀請' end
from 表,,,,
不知道是不是你要的效果
J. asp文件中sql-between月份單雙問題
首先你應該把欄位的日期類型改為日期時間型,如果你目前為字元串的話可以採用replace()函數把/轉換為「-」橫線,然後再更改欄位類型。
但是讓我迷惑的是,怎麼回出現2014-1-1和2015/1/1這兩種格式呢,我一般用2015-01-01這種格式,當然了2015-1-1和2015-01-01是相等的,2015/1/1和2015/01/01是相等的,理論上只要把/替換成-號就可以進行欄位類型的更改了,
第一個SQL語句:update 表名 set 我是時間欄位=replace(我是時間欄位,'/','-'),把所有/字元串全部替換為-.
第二個SQL語句:update 表名 set 我是時間欄位=replace(我是時間欄位,' ',''),替換所有空格為空,這一句可以不加,只要你能欄位類型更改成功。
備註:現在討論下出現兩種格式不統一的原因:資料庫欄位格式本來就設置為2015/1/1這種格式(2015/1/1這種格式在ACCESS中有人使用),但是2015-1-1卻可以正確寫入,既然都是日期時間型的話自然可以用SQL直接篩選啊,但是出現數據不準可能是設置錯誤,正確格式應該為2015-1-1 00:00:00,也就是說必須帶時分秒的。默認SQL語句:select * from 表名 where 我是時間欄位>='2015-1-1' and 我是時間欄位<='2015-1-31',這條SQL語句的時間范圍為查詢2015-1-1 00:00:00 到2015-1-31 00:00:00,所以應該SQL語句應該是:select * from 表名 where 我是時間欄位>='2015-1-1 00:00:00' and 我是時間欄位<='2015-1-31 23:59:59',你調試下看時間段停留在哪?
如果sql語句不能用逗號的號可以改成#(ACCESS有這種毛病)