直接用估計沒有,可以定義一個函數(shù)轉(zhuǎn)一下,MSSQL中有個stuff函數(shù)
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、汶上網(wǎng)站維護(hù)、網(wǎng)站推廣。
在指定位置替換或增加字符,比如:
SELECT STUFF('12345678', 2, 3, 'abc')
SELECT STUFF('12345678', 2, 0, ':')
但只能插入一個位置。
建議自定義一個字符串處理函數(shù),然后在語句中調(diào)用吧
比如
create function dbo.fn_setColon (
@oldstr varchar(4000) )
returns varchar(4000)
as
begin
declare @outstr varchar(4000)
set @outstr=''
while (len(@oldstr)2)
begin
set @outstr=@outstr+left(@oldstr,2)+':'
set @oldstr=right(@oldstr, len(@oldstr)-2)
end
if @oldstr''
begin
set @outstr=@outstr+@oldstr
end
return @outstr
end
select dbo.fn_getColon('123456789')
第二種情況可以先把字符串中的字母替換掉,然后再調(diào)用該函數(shù),建議還是通過前端程序來處理字符串。
在SQL SERVER 2005中,將表中字符串轉(zhuǎn)換為數(shù)字的函數(shù)共2個:
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其實,一般情況下沒有必要把字符串轉(zhuǎn)換為數(shù)字類型
假如需要比較兩個字段是否相等,但是一個字段為字符串類型,一個為數(shù)字類型,用“=”比較兩個值是否相等時,SQL SERVER會自動把字符串轉(zhuǎn)換為數(shù)字再比較的!
例如:
select da.TITLE_NAME,dsc.NAME
from dbo.DV_DUTY dd
inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA)
left join DV_ASSET da on(da.ID=dd.RECORD_ID and dd.TYPE='2')
where dd.AREA is not null
這個SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID為數(shù)字類型,dd.AREA為字符類型,相當(dāng)于這樣on(1='1')的判斷,這時候就會自動吧字符串的'1'轉(zhuǎn)換為數(shù)字類型再比較的。
但是也有弊端,一旦字符類型轉(zhuǎn)換為數(shù)字類型出錯(說明字符串的確就非數(shù)字組成的),SQL就會拋出異常。
SQL SERVER 2005中有判斷字段是否為數(shù)字的函數(shù):
ISNUMERIC(字段名) -----假如字段是數(shù)字類型返回1,不是就返回0
但是好像有的時候不好使,比如:select isnumeric('3,34') 就返回1
說明這個函數(shù)對字段值中全是數(shù)字但是數(shù)字間用“,”和“.”(逗號或點)隔開的都視為數(shù)字了!
字符串要打引號的,數(shù)值型才不用打,最直接的方法是把你這些字符串換成具體的內(nèi)容自己拼接一下檢查,向你上面的string strsql="select * from jpsx_ddl where class= 城市"; 而城市是個字符串,所以要加單引號string strsql="select * from jpsx_ddl where class=' " + cls + " ' ";
以上回答你滿意么?
如樓上給的 單獨分割一部分 ? ?也可用下面的函數(shù) 分割出一個集合
--?1.0?拆分字符串?參數(shù)?@strSource要操作的字符串?@strSeparator分隔符
CREATE?FUNCTION?[dbo].fn_splitStr(?@strSource?NVARCHAR(4000),@strSeparator?NVARCHAR(10)?)
RETURNS?@tbResult?TABLE(id?INT?IDENTITY(1,1),rs?NVARCHAR(1000))
AS
BEGIN
DECLARE?@dwIndex?INT,@strResult?NVARCHAR(1000),@dwSeparatorLen?INT=LEN(@strSeparator);
SET?@dwIndex?=?CHARINDEX(@strSeparator,@strSource);--?取得第一個分隔符的位置
WHILE?@dwIndex0
BEGIN
SET?@strResult?=?LEFT(@strSource,@dwIndex-1);
INSERT?@tbResult?VALUES(@strResult);
--將要操作的字符串去除已切分部分
SET?@strSource?=?SUBSTRING(@strSource,@dwIndex+LEN(@dwIndex),LEN(@strSource));
SET?@dwIndex?=?CHARINDEX(@strSeparator,@strSource);?--循環(huán)量增加
END
--處理最后一節(jié)
IF?LEN(@strSource)??0?INSERT?@tbResult?VALUES(@strSource)
RETURN;
END
GO
返回字符串在表達(dá)式expression里第一次出現(xiàn)的位置,起始值從1開始算,沒找就返回0
描述一下此函數(shù)的具體用法:
'%pattern%' 的用法類似于 like '%pattern%' 的用法,也就是模糊查找其pattern字符串是否是expression找到,找到并返回其第一次出現(xiàn)的位置。
查找pattern的結(jié)束所在expression的位置,也就是從后面匹配起查找。
查詢pattern首次出現(xiàn)的位置。
返回0,開頭找不到就返回0,后面無論有多少都不管。
這就相當(dāng)于精確匹配查找,也就是pattern,expression完全相等。
[] 是指定某些特殊的字符。
[^] 除[]之外的字符串。
網(wǎng)站欄目:sqlserver字符串,sqlserver字符串連接
文章位置:http://vcdvsql.cn/article48/dsdgsep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、外貿(mào)建站、全網(wǎng)營銷推廣、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)