『壹』 sql contains兩種寫法的區別
其實只要理順 and 和 or 的關系及優先順序就可以了
首先 and 優先順序大於or即碰到有and和or 先從左到右執行and在or
第一句可以看成
先執行
contains(keyword,'faucets')
and ecompanyid=1057248 如果有4個結果
CONTAINS (keyword, 'kitchen')如果有5個結果,最終9個結果
第二句
先執行
CONTAINS (keyword, 'kitchen | faucets') 得到keywork=kitchen 或 faucets,|應該是或吧。這個真不知道我一般寫 or 。 並且 ecompanyid=1057248 的數據。
所以結果肯定不一樣
『貳』 The SQL statement must not contain a procere call or parameter markers.
sql聲明不能包含存儲過程和參數這是那段語句的意思
『叄』 SQL contains查詢語句
select * from member where user_name like '%李%',這樣就查找所有「李」字的欄位。select * from member where user_name ='李',這樣就查找是「李」字的欄位
『肆』 請教關於Sql Server2008R2是如何對物理內存分配使用的
沒什麼好怕的, 如果你的使用量太大, sqlserver會佔用所有內存, 這是正常現象。
你唯一需要注意的是:
1. SqlServer伺服器的cpu高不高?(看任務管理器)
2. 慢的SQL有哪些?
下面的sql可以幫你, 應該直接在伺服器上查詢:
SQL code?
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].Proc_DBA_GetSlowSQL') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].Proc_DBA_GetSlowSQL
GO
-- =============================================
-- Author: yenange
-- Create date: 2015-12-17
-- Description: 取得最近執行緩慢的SQL語句
-- =============================================
CREATE PROCEDURE dbo.Proc_DBA_GetSlowSQL
@topNum INT = 50 --取前多少條記錄
,@lastExecutionTime DATETIME = NULL --最後執行時間, 默認為NULL. 為 NULL 則忽略此條件; 不為NULL 則取大於此參數之後執行的
,@excludeNight BIT=1 --是否 排除晚上的信息? 默認=1 排除。選擇是=1,後面兩參數才有意義
,@nightBegin CHAR(5)='22:00' --"晚上"開始時間點, 默認 22:00
,@nightEnd CHAR(5)='06:00' --"晚上"結束時間點, 默認 06:30
,@containSQL NVARCHAR(300)=NULL --語句中包含的SQL. 默認為NULL. 為NULL則忽略此條件; 不為NULL則取包含此參數的記錄
AS
BEGIN
SET NOCOUNT ON
DECLARE @nightBegin_num INT
DECLARE @nightEnd_num INT
SET @nightBegin_num=CAST( replace(@nightBegin,':','') AS INT)
SET @nightEnd_num=CAST( replace(@nightEnd,':','') AS INT)
SET ROWCOUNT @topNum
SELECT
st.text AS SQL_Full --父級完整語句
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) as SQL_Part --統計對應的部分語句
, CAST( ((qs.total_elapsed_time / 1000000.0)/qs.execution_count) AS DECIMAL(28,2) ) AS [平均消耗秒數]
, CAST(qs.last_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [最後完成消耗秒數]
, qs.last_execution_time AS [最後執行時間]
, CAST(qs.min_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [最小消耗秒數]
, CAST(qs.max_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [最大消耗秒數]
, CAST(qs.total_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [總消耗秒數]
, (qs.execution_count) AS [總執行次數]
, creation_time AS [編譯計劃的時間]
, CAST(qs.last_worker_time / 1000000.0 AS DECIMAL(28, 2)) AS [最後完成佔用CPU秒數]
, sql_handle,statement_start_offset,statement_end_offset
,plan_generation_num,plan_handle,creation_time
,last_execution_time,execution_count
,total_worker_time,last_worker_time,min_worker_time,max_worker_time
,total_physical_reads,last_physical_reads,min_physical_reads,max_physical_reads,total_logical_writes,last_logical_writes,min_logical_writes,max_logical_writes,total_logical_reads,last_logical_reads,min_logical_reads,max_logical_reads
,total_clr_time,last_clr_time,min_clr_time,max_clr_time
from sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE
--1. 最後執行時間
(@lastExecutionTime IS NULL OR qs.last_execution_time>=@lastExecutionTime)
--2. 包含 SQL 條件
AND
(@containSQL IS NULL OR st.[text] LIKE '%'+@containSQL+'%')
AND
--3. 是否排除晚上
(
@excludeNight=0
OR
(
--2.1 開始大於結束 22:00->6:30 [ x >=6:30(end) and x<22:00(begin) ]
@nightBegin_num>@nightEnd_num AND
(
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)>=@nightEnd_num
AND
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)<@nightBegin_num
)
)
OR
(
--2.2 開始小於結束 1:00->6:30 [ x>=0:00 and x<1:00 or x>=6:30 and x<24:00 ]
@nightBegin_num<@nightEnd_num AND
(
(
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)>=0
AND
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)<@nightBegin_num
)
OR
(
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)>=@nightEnd_num
AND
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)<2400
)
)
)
)
ORDER BY qs.last_elapsed_time DESC
SET NOCOUNT OFF
SET ROWCOUNT 0
END
GO
EXEC sys.sp_addextendedproperty
@name=N'Version', @value=N'1.1' ,
@level0type=N'SCHEMA',@level0name=N'dbo',
@level1type=N'PROCEDURE',@level1name=N'Proc_DBA_GetSlowSQL'
『伍』 sql server CONTAINS用法
CONTAINS的意思是包含,通常用在條件查詢中。
sql:select id,name from tablename where contains( address, '上海' );
解釋:查詢出tablename表中address欄位的值包含「上海」的所有記錄的id和name欄位的值。
備註:通常contains語句可以通過like語句來進行替換。在實際開發中可以根據實際情況選擇一種即可。
『陸』 SQL怎麼查詢一組數據
for(int i =0;i<users.count;i++)
{select * from users where nane=users[i]}
這樣查出來根本不止一個datatable了啊!
你這里說的查詢不得法,在For循環裡面每循環一次都查詢一次,放到List裡面去就行了.
SqlDataAdapter adp=new SqlDataAdapter();
DataSet ds=new DataSet();
For(int i=0; i<users.count; i++)
{
adp.selectCommandText="select * from USER where name='"+users[i].name+"'"
adapter.fill(ds)
......................
list.add(user...password...);
}
『柒』 SQL語句錯誤,提示:"#1241 - Operand should contain 1 column(s)"錯誤
SQL語句錯誤,提示:"#1241 - Operand should contain 1 column(s)"錯誤,是因為操作的數據里查詢結果沒有列值,指明要查的列即可。
工具/材料:以Management Studio為例。
1、首先在桌面上,點擊「Management Studio」圖標。