A. sqlserver感覺比Access容易注入
不對,access資料庫安全性更差。同時資料庫位置如果被別人知道,還有被下載的危險。
sqlserver你所說的這種注入,局限於sql2000與asp結合的頁面,這是由於編寫者在頁面中沒有進行安全檢測,或者是頁面連接資料庫給了寫許可權之類馬虎大意造成的。
如果你用sqlserver2005,或者asp.net來編寫頁面,這樣的注入完全可以避免。
sql是專業做資料庫的,怎麼可能比microsoft access這種為了兼容windows而事實而非的資料庫更危險呢!
B. sqlserver 按分隔符截取字元串
可以參考下面的代碼:
selectsubstring('ADFASDFD(DASFADSFAS)',1,charindex('(','ADFASDFD(DASFADSFAS)')-1)
主要用到兩個函數,一個charindex,這個是判斷指定字元位置的函數。
另一個是substring,這個是截取字元串的函數。
(2)sqlserver分號擴展閱讀:
sqlserver參考函數
upper(char_expr) 轉為大寫
lower(char_expr) 轉為小寫
space(int_expr) 生成int_expr個空格
reverse(char_expr) 反轉字元串
stuff(char_expr1,start,length,char_expr2) 將字元串char_expr1中的從
C. Sqlserver怎麼求一個數占總數的百分之幾
select 12/23 * 100 ||'%' from al;
mysql 伺服器支持 # 到該行結束、-- 到該行結束 以及 /* 行中間或多個行 */ 的注釋方格:
mysql> SELECT 1+1; # 這個注釋直到該行結束
mysql> SELECT 1+1; -- 這個注釋直到該行結束
mysql> SELECT 1 /* 這是一個在行中間的注釋 */ + 1;
mysql> SELECT 1+
/*
這是一個
多行注釋的形式
*/
1;
注意 -- (雙長劃) 注釋風格要求在兩個長劃後至少有一個空格!
盡管伺服器理解剛才描述的注釋句法,但 MySQL 客戶端的語法分析在 /* ... */ 注釋方式上還有所限止:
單引號和雙引號被用來標志一個被引用字元串的開始,即使是在一個注釋中。如果注釋中的引號沒有另一個引號與之配對,那和語法分析程序就不會認為注釋結束。如果你以互動式運行 mysql,你會產生困惑,因為提示符從 mysql> 變為 '> 或 ">。
一個分號被用於指出當前 SQL 語句的結束並且跟隨它的任何東西表示下一行的開始。
不論你是以互動式運行 mysql 還是將命令放在一個文件中,然後以 mysql < some-file 告訴 mysql 讀取它的輸入,這個限制均存在。
D. sqlserver怎麼把一個表中按分號隔開的字元串分成多行放在一個臨時表中呢
分割「版區負責人Id」,使其結果為
版區Id版區負責人Id
6123
6456
6789
(這里,我想來想去,只有使用零時表+游標來實現,個人沒有想到更好的方法)
CREATEFUNCTION[dbo].[fun_Split]
(
@strVARCHAR(MAX),
@splitVARCHAR(10)
)
RETURNSTABLE
AS
RETURN
(SELECTB.idFROM(SELECT[value]=CONVERT(XML,'<v>'+REPLACE(@str,@split,'</v><v>')
+'</v>')
)A
OUTERAPPLY(SELECTid=N.v.value('.','varchar(100)')
FROMA.[value].nodes('/v')N(v)
)B
)
GO
--2005以及以上的版本支持這種分割寫法。用xml path,把數據搞成你所要的結果
E. sqlserver with 語法
一.sqlserver with as的含義
WITH AS短語,也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義一個SQL片斷,該SQL片斷會被整個SQL語句所用到。有的時候,是為了讓SQL語句的可讀性更高些,也有可能是在UNION ALL的不同部分,作為提供數據的部分。
特別對於UNION ALL比較有用。因為UNION ALL的每個部分可能相同,但是如果每個部分都去執行一遍的話,則成本太高,所以可以使用WITH AS短語,則只要執行一遍即可。如果WITH AS短語所定義的表名被調用兩次以上,則優化器會自動將WITH AS短語所獲取的數據放入一個TEMP表裡,如果只是被調用一次,則不會。而提示materialize則是強制將WITH AS短語里的數據放入一個全局臨時表裡。很多查詢通過這種方法都可以提高速度。
二.使用方法
先看下面一個嵌套的查詢語句:
select * from person.StateProvince where CountryRegionCode in
(select CountryRegionCode from person.CountryRegion where Name like 'C%')
declare @t table(CountryRegionCode nvarchar(3))
insert into @t(CountryRegionCode) (select CountryRegionCode from person.CountryRegion where Name like 'C%')
select * from person.StateProvince where CountryRegionCode
in (select * from @t)
F. 連接SqlServer字元串出錯(在線等)
少了一個分號,server=mySQLServer後應當跟一個分號。
如下:
string strConnection = "server=mySQLServer;";
strConnection += "database=ztx;uid=sa;password=wxj;";
G. SQLSERVER 變數賦值
set @login_id_csv = ('aa', 'bb', 'cc')
試試加上引號
set @login_id_csv = 『('aa', 'bb', 'cc') 』
還不行的話看看你是什麼資料庫 有的資料庫執行sql需要在後邊加分號
http://technet.microsoft.com/zh-cn/ms188927.aspx
還不行的話你可以參考這里 有講declare的用法
H. SQLSERVER EXEC參數的問題
其實就是對同名稱的存儲過程加一個區分,但是又可以使用同一個名稱來刪除。
形象的說就是一個存儲過程有兩個版本。
I. microsoft sql server2005 中在完成SQL語句時,需要寫分號嗎如果不寫分號可以執行多條語句嗎
可以寫分號 也可以不寫 ,建議養成習慣 寫 go 比較好些
寫不寫 都可以執行 ,但是如果對統一表進行操作容易出問題 最好寫go
J. sql實現字元串分割截取,以分號做標致位。
你的資料庫是什麼資料庫?
sqlserver?oracle?
下面這個是db2的,簡單改一下sqlserver應該就能用:
http://hi..com/micro0369/item/cac396e8c99fc5e9fb42ba5e
找到一個sqlserver的:
http://blog.csdn.net/xiaoyuan402/article/details/7049473