1. sql中的string sql
是程序里的代碼。
一個運用程序要實現對資料庫的操作,其中一部是在代碼中拼接出操作資料庫的sql語句。
這里的sql本質上只是一個字元串,然後通過兩個判斷對其拼接。只不過拼接好之後可以用作資料庫操作的sql語句。
2. SQL怎麼拼接字元串
不同的資料庫,相應的字元串拼接方式不同,通過對比加深一下記憶。
一、MySQL字元串拼接
1、CONCAT函數
語法格式:CONCAT(char c1, char c2, ..., char cn) ,其中char代表字元串,定長與不定長均可以
連接兩個字元串
(2)sqlstring擴展閱讀
字元串函數(String processing function)也叫字元串處理函數,指的是編程語言中用來進行字元串處理的函數,如C,pascal,Visual以及LotusScript中進行字元串拷貝,計算長度,字元查找等的函數。
字元串主要用於編程,概念說明、函數解釋、用法詳述見正文,這里補充一點:字元串在存儲上類似字元數組,所以它每一位的單個元素都是可以提取的,如s=「abcdefghij」,則s[1]=「a」,s[10]="j"。
而字元串的零位正是它的長度,如s[0]=10(※上述功能Ansistring沒有。),這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入數組。
字元串函數的應用
1、連接運算 concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn.
例:concat(『11』,'aa』)='11aa』;
2、求子串。 Copy(s,I,I) 從字元串s中截取第I個字元開始後的長度為l的子串。
例:(『abdag』,2,3)=』bda』
3、刪除子串。過程 Delete(s,I,l) 從字元串s中刪除第I個字元開始後的長度為l的子串。
例:s:=』abcde』;delete(s,2,3);結果s:=』ae』
4、插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置
例:s:=abc;insert(『12』,s,2);結果s:=』a12bc』
5、求字元串長度 length(s) 例:length(『12abc』)=5
在ASP中 求字元串長度用 len(s)例: len("abc12")=5
6、搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,則返回s1的第一個字元在s2中的位置,若不是子串,則返回0.
例:pos(『ab』,』12abcd』)=3
7、字元的大寫轉換。Upcase(ch) 求字元ch的大寫體。
例:upcase(『a』)=』A』
8、數值轉換為數串。 過程 Str(x,s) 把數值x化為數串s.
例:str(12345,s); 結果s=』12345』
9、數串轉換為數值。 過程val(s,x,I) 把數串s轉化為數值x,如果成功則I=0,不成功則I為無效字元的序數,第三個參數也可不傳
例:val(『1234』,x,I);結果 x:=1234
3. SQL 截取字元串
SUBSTRING
返回字元、binary、text 或 image 表達式的一部分。有關可與該函數一起使用的有效 Microsoft® SQL Server™ 數據類型的更多信息,請參見數據類型。
語法
SUBSTRING ( expression , start , length )
參數
expression
是字元串、二進制字元串、text、image、列或包含列的表達式。不要使用包含聚合函數的表達式。
start
是一個整數,指定子串的開始位置。
length
是一個整數,指定子串的長度(要返回的字元數或位元組數)。
substring()
——任意位置取子串
left()
right()
——左右兩端取子串
ltrim()
rtrim()
——截斷空格,沒有trim()。
charindex()
patindex()
——查子串在母串中的位置,沒有返回0。區別:patindex支持通配符,charindex不支持。
函數功效:
字元串截取函數,只限單位元組字元使用(對於中文的截取時遇上奇數長度是會出現亂碼,需另行處理),本函數可截取字元串指定范圍內的字元。
應用范圍:
標題、內容截取
函數格式:
string substr ( string string, int start [, int length])
參數1:處理字元串
參數2:截取的起始位置(第一個字元是從0開始)
參數3:截取的字元數量
substr()更多介紹可在PHP官方手冊中查詢(字元串處理函數庫)
舉例:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字元
substr("ABCDEFG", 2); //返回:CDEFG,截取從C開始之後所有字元
substr("ABCDEFG", 0, 3); //返回:ABC,截取從A開始3個字元
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100雖然超出預處理的字元串最長度,但不會影響返回結果,系統按預處理字元串最大數量返回。
substr("ABCDEFG", 0, -3); //返回:EFG,注意參數-3,為負值時表示從尾部開始算起,字元串排列位置不變
例子:
1.截取已知長度的函數
A.截取從字元串左邊開始N個字元
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select Left(@S1,4)
------------------------------------
顯示結果: http
B.截取從字元串右邊開始N個字元(例如取字元www.163.com)
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select right(@S1,11)
------------------------------------
顯示結果: www.163.com
C.截取字元串中任意位置及長度(例如取字元www)
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select SUBSTRING(@S1,8,3)
------------------------------------
顯示結果: www.163.com
以上例子皆是已知截取位置及長度,下面介紹未知位置的例子
2.截取未知位置的函數
A.截取指定字元串後的字元串(例如截取http://後面的字元串)
方法一:
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select Substring(@S1,CHARINDEX('www',@S1)+1,Len(@S1))
/*此處也可以這樣寫:Select Substring(@S1,CHARINDEX('//',@S1)+2,Len(@S1))*/
------------------------------------
顯示結果: www.163.com
需要注意:CHARINDEX函數搜索字元串時,不區分大小寫,因此CHARINDEX('www',@S1)也可以寫成CHARINDEX('WWW',@S1)
方法二:(與方法一類似)
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select Substring(@S1,PATINDEX('%www%',@S1)+1,Len(@S1))
--此處也可以這樣寫:Select Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
------------------------------------
顯示結果: www.163.com
函數PATINDEX與CHARINDEX區別在於:前者可以參數一些參數,增加查詢的功能
方法三:
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select REPLACE(@S1,'http://','')
------------------------------------
顯示結果: www.163.com
利用字元替換函數REPLACE,將除需要顯示字元串外的字元替換為空
方法四:
Declare @S1 varchar(100)
Select @S1='http://www.163.com'
Select STUFF(@S1,CHARINDEX('http://',@S1),Len('http://'),'')
------------------------------------
顯示結果: www.163.com
函數STUFF與REPLACE區別在於:前者可以指定替換范圍,而後者則是全部范圍內替換
B.截取指定字元後的字元串(例如截取C:\Windows\test.txt中文件名)
與A不同的是,當搜索對象不是一個時,利用上面的方法只能搜索到第一個位置
方法一:
Declare @S1 varchar(100)
Select @S1='C:\Windows\test.txt'
select right(@S1,charindex('\',REVERSE(@S1))-1)
-------------------------------------
顯示結果: text.txt
利用函數REVERSE獲取需要截取的字元串長度
substr()
例子:
private void DDL_AreaBind()
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["strcon"].ConnectionString);
string str = "0000";
cmd = new SqlCommand("select AreaID,Name=ltrim(Name) from Area where right(AreaID,4) ='" + str + "'", conn);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds, "area");
this.ddl_area.DataSource = ds.Tables["area"].DefaultView;
this.ddl_area.DataTextField = "Name";
this.ddl_area.DataValueField = "AreaID";
this.ddl_area.DataBind();
cmd = new SqlCommand("select * from Area ", conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds, "city");
this.ddl_city.DataSource = ds.Tables["city"].DefaultView;
this.ddl_city.DataTextField = "Name";
this.ddl_city.DataValueField = "AreaID";
this.ddl_city.DataBind();
}
protected void ddl_area_SelectedIndexChanged(object sender, EventArgs e)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["strcon"].ConnectionString);
this.ddl_city.Enabled = true;
string str1="0000";
cmd = new SqlCommand("select AreaID,Name from Area where substring(AreaID,1,2)='" + this.ddl_area.SelectedValue.Substring(0,2) + "' AND substring(AreaID,3,4) <> '0000' AND substring(AreaID,5,2)='00' ", conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds, "city");
this.ddl_city.DataSource = ds.Tables["city"].DefaultView;
this.ddl_city.DataTextField = "Name";
this.ddl_city.DataValueField = "AreaID";
this.ddl_city.DataBind();
}。
4. SQL字元串比較
要學會先搜索
以使用instr函數對某個字元串進行判斷,判斷其是否含有指定的字元。
其語法為:
instr(sourceString,destString,start,appearPosition). instr('源字元串' , '目標字元串' ,'開始位置','第幾次出現')
其中sourceString代表源字元串;
destString代表想聰源字元串中查找的子串;
start代表查找的開始位置,該參數可選的,默認為1;
appearPosition代表想從源字元中查找出第幾次出現的destString,該參數也是可選的,默認為1;
如果start的值為負數,那麼代表從右往左進行查找,但是位置數據仍然從左向右計算。
返回值為:查找到的字元串的位置。
對於instr函數,我們經常這樣使用:從一個字元串中查找指定子串的位置。例如:
SQL> select instr('yuechaotianyuechao','ao') position from al;
POSITION
----------
6
從第7個字元開始搜索
SQL> select instr('yuechaotianyuechao','ao', 7) position from al;
POSITION
----------
17
從第1個字元開始,搜索第2次出現子串的位置
SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from al;
POSITION
----------
17
注意:1。若『起始位置』=0 時返回結果為0,
2。這里只有三個參數,意思是查找第一個要查找字元的位置(因為 『第幾次出現』默認為1),
當『起始位置』不大於要查找的第一個字元的位置時,返回的值都將是第一個字元的位置,如果『起始位置』大於要查找的第一個字元的位置時,返回的值都將是第2個字元的位置,依此類推……(但是也是以第一個字元開始計數)
5. sql中,字元串的字元串
sql轉義字元是單引號,如果字元包含單引號,就需要寫成兩個單引號:
declare @sql varchar(255)
set @sql = '''這是單引號示範'''
print @sql
6. sql語句字元串查詢語句
1)查詢用戶ID在2012432100到2012432111之間的記錄。
SELECT * FROM USER
WHERE USER_ID BETWEEN 2012432100 AND 2012432111
2)查詢用戶ID在2012432100和2012432111的記錄。
SELECT * FROM USER
WHERE USER_ID IN(2012432100,2012432111)
7. sql怎麼查詢string中的內容求大神 急!
可用substring函數來查詢。
比如表中有如下數據:
substring函數說明:
substring函數需要三個參數,其中第一個參數是要截取的字元串,第二個參數是要查詢字元串的起始位,第三個參數為截取的字元長度。
8. SQL 處理字元串
用SQL的表函數功能建一個相當於java中處理字元串的split函數,可以實現你說的功能:
--1.實現split功能的sql函數
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(sub varchar(1000))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end
說明:上面的函數需要兩個參數,@SourceSql表示要分割的字元串,@StrSeprate表示間隔標記。
------------------------------------------------------------
這個sql函數返回一個分割的字元串表,表具體用法是:
select * from f_split('SO03-EEE04-SO0QQQQQQ6005','-')
查詢的結果就是
S003
EEE04
SO0QQQQQQ6005
--------------------------------------------------------
根據你的查詢要求,可以這樣使用該函數:
select * from T where id in f_split('SO0906003-SO0906004-SO0906005','-')
----------------------補充------------------------------
暈,又跟樓上撞車了!
9. String sql = "select * from ";是什麼語句
string 定義了一個字元串類型的變數,變數值為select * from
好多語言都有這樣的寫法,如java。
但是變數值是sql語句的一部分,
10. sql日期轉string
在MySQL資料庫中可以用date_format函數將日期類型轉成字元串類型。