① 如何用sql語句實現這樣的檢索 感覺比較復雜!
不難得
假設你欄位是
id name
A 地質2008001
A 地質2008002
A 地質2008003
A 環境2008001
可以用
SELECT id,
MAX(CASE WHEN name LIKE '地質%' THEN name ELSE NULL END),
MAX(CASE WHEN name LIKE '環境%' THEN name ELSE NULL END),
FROM tab
GROUP BY id
② SQL按時間檢索 精確到秒
select
top
5
sum(b)
from
aaa
where
c
in(select
top
5
max(c)
from
aaa
order
by
c
desc)
order
by
c
desc
試試~
③ sql檢索問題
語句如下:
select o.aid from Customers c inner join Orders o on o.cid=c.cid where c.city in ('Duluth','Kyoto') group by o.aid,o.pid 商品、訂單表沒必要連表查
④ sql資料庫中檢索數據
這個可能復雜點,我有一個方案,
首先做一個自定義方法,然後進行查詢
-----自定義方法------
CREATE FUNCTION SplitStr (@splitString varchar(8000), @separate varchar(10))
RETURNS @returnTable table(col_Value varchar(20))
AS
BEGIN
declare @thisSplitStr varchar(20)
declare @thisSepIndex int
declare @lastSepIndex int
set @lastSepIndex = 0
if Right(@splitString ,len(@separate)) <> @separate set @splitString = @splitString + @separate
set @thisSepIndex = CharIndex(@separate,@splitString ,@lastSepIndex)
while @lastSepIndex <= @thisSepIndex
begin
set @thisSplitStr = SubString(@splitString ,@lastSepIndex,@thisSepIndex-@lastSepIndex)
set @lastSepIndex = @thisSepIndex + 1
set @thisSepIndex = CharIndex(@separate,@splitString ,@lastSepIndex)
insert into @returnTable values(@thisSplitStr)
end
return
END
---------測試語句--------
select * from
(
select 'a,b,c,a,d' as b
union all
select 'c,f,d,e,t'
union
select 'd,d,f,g,h'
) as a
where
(select COUNT(1)
from
dbo.SplitStr(b,',')
group by col_Value
having COUNT(1)>1)>0
--------查詢結果--------
a,b,c,a,d
d,d,f,g,h
⑤ 怎麼用sql語句檢索出某一欄位中的關鍵字
做不到的,除非你用or字句
select*fromgoodswheregoodsnamelike'%的%'orgoodsnamelike'%子%'
⑥ sql中全文檢索的具體細節
全文索引和全文檢索是sql server 7.0的新增功能,它能夠對數據中的字元類型列(如varchar、text等類型列)進行索
引,並通過索引實現全文搜索查詢。sql server常規索引與全文檢索相比,二者的區別如下:
常規索引 全文索引
使用create index或約束定義創建 使用全文索引存儲過程創建和刪除
通過刪除或執行drop index語句刪除
當插入、修改或刪除數據時,sql server 只能通過任務調度或執行存儲過
能夠自動更新常規索引內容 程來填充全文索引
每個表可以建立多個常規索引 每個表只能有一個全文索引
索引不能分組 同一個資料庫中的多個全文索引可
以組織為一個全文目錄
常規索引存儲在資料庫文件中 全文索引存儲在文件系統中
為了支持全文索引操作,sql server 7.0新增了一些新存儲過程和transact-sql語句,使用這些存儲過程創建全文索引的
具本步驟為(括弧內為每步所調用的存儲過程名稱):
(1)啟動資料庫的全文處理功能(sp_fulltext_datebase);
(2)建立全文目錄(sp_fulltext_catalog);
(3)在全文目錄中注冊需要全文索引的表(sp_fulltext_table);
(4)指出表中需要全文檢索的列名(sp_fulltext_column)
(5)為表創建全文索引(sp_fulltext_table);
(6)填充全文索引(sp_fulltext_catalog)。
例:
use pubs
go
exec sp_fulltext_database 'enable'
--為titles表建立全文索引數據元,其中create為建立,activate為激活,deactivate為關閉表全文索引的激活狀態,使
它不再參加全文目錄填充,drop為刪除;create參數中,後面跟的是全文目錄名稱和索引列名。
--下面語句為pubs資料庫中的titles表創建全文索引數據元,存儲該數據元的全文目錄為FT_pubs,所使用的唯一索引為
UPKCL_titleidind(title表中為title_id列的PRIMARY KEY約束所建立的唯中索引)
sp_fulltext_table titles,'create','FT_pubs','upkcl_titledind'
--激活它
sp_fulltext_table titles,'activate'
--指定參加全文索引的列
sp_fulltext_column 'titles','title','add'
sp_fulltext_column 'titles','notes','add'
下面是一個完整的例子:
--在執行該腳本程序之前啟動sql server的全文搜索服務,即microsoft search服務
use pubs --打開資料庫
go
--檢查pubs是否支持全文索引,如果不支持全文索引,則使用sp_fulltext_datebase打開該功能
if (select databaseproperty ('pubs','IsFulltextEnables'))=0
execute sp_fulltext_database 'enable'
--建立全文目錄FT_pubs
execute sp_fulltext_catalog 'FT_pubs','create'
--為titles表建立全文索引數據元
execute sp_fulltext_table 'titles','FT_pubs','UPKCL_titleidind'
--設置全文索引列名
execute sp_fulltext_column 'titles','title','add'
execute sp_fulltext_column 'titles','notes','add'
--建立全文索引
execute sp_fulltext_table 'FT_pubs','activate'
--填充全文索引目錄
execute sp_fulltext_catalog 'FT_pubs','start_full'
GO
--檢查全文目錄填充情況
WHILE FulltextCatalogProperty("FT_pubs','PopulateStatus')<>0
BEGIN
--如果全文目錄正處於填充狀態,則等待30秒後再檢測一次
WAITFOR DELAY 『0:0:30』
END
--全文目錄填充完成後,使用全文目錄檢索
--查詢title列或notes列中包含有database或computer字元串的圖書名稱
SELECT title
FROM title
where CONTAINTS(title,'database')
or contains(notes,'database')
or contains(title,'computer')
or contains(notes,'computer')
⑦ SQL資料庫查詢(實現精確查找)
用CONVERT或者CAST函數可以轉化
假設TEXTBOX1.text 是 輸入的id值 TEXTBOX2.text 是 輸入的Name值
select * from 表名 where id=convert(int,TEXTBOX1.text) or Name=TEXTBOX2.text
⑧ SQL中Grouping語句是怎樣區分細節數據和匯總數據的
MySQL 8.0 新增了 GROUPING() 函數,用來理清 GROUP BY with rollup 子句檢索後所產生的每個分組匯總結果。 grouping 可用在分組列,having 子句以及 order by 子句。
GROUPING() 函數用來返回每個分組是否為 ROLLUP 結果,是為 1 否為 0。從結果中,很容易就能區分哪些 NULL 是正常記錄,哪些是 ROLLUP 的結果。
GROUPING() 函數不僅僅是針對單個欄位來統計匯總值,還可以針對多個欄位。
此時會發現,GROUPING() 函數對多個欄位結果並非只有 1 和 0,還有一個值為 3。在 GROUPING() 函數包含多個參數時,按照以下方式來返回結果:
GROUPING(r1,r2) 等價於 GROUPING(r2)+ GROUPING(r1) << 1
GROUPING(r1,r2,r3,...) 等價於 GROUPING(r3) + GROUPING(r2) << 1 + GROUPING(r1) << 2
以此類推
GROUPING 語句還可以用在 HAVING 子句里,比如用 GROUPING 子句來過濾掉非 ROLLUP 的結果。
⑨ 如何用SQL語言檢索表中的欄位名
SQL SERVER
查看所有表名:
select name from sysobjects where type='U'
查詢表的所有欄位名:
Select name from syscolumns Where ID=OBJECT_ID('表名')
select * from information_schema.tables
select * from information_schema.views
select * from information_schema.columns
ACCESS
查看所有表名:
select name from MSysObjects where type=1 and flags=0
MSysObjects是系統對象,默認情況是隱藏的。通過工具、選項、視圖、顯示、系統對象可以使之顯示出來。