直接用估計(jì)沒有,可以定義一個(gè)函數(shù)轉(zhuǎn)一下,MSSQL中有個(gè)stuff函數(shù)
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、汶上網(wǎng)站維護(hù)、網(wǎng)站推廣。
在指定位置替換或增加字符,比如:
SELECT STUFF('12345678', 2, 3, 'abc')
SELECT STUFF('12345678', 2, 0, ':')
但只能插入一個(gè)位置。
建議自定義一個(gè)字符串處理函數(shù),然后在語(yǔ)句中調(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ù),建議還是通過(guò)前端程序來(lái)處理字符串。
在SQL SERVER 2005中,將表中字符串轉(zhuǎn)換為數(shù)字的函數(shù)共2個(gè):
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其實(shí),一般情況下沒有必要把字符串轉(zhuǎn)換為數(shù)字類型
假如需要比較兩個(gè)字段是否相等,但是一個(gè)字段為字符串類型,一個(gè)為數(shù)字類型,用“=”比較兩個(gè)值是否相等時(shí),SQL SERVER會(huì)自動(dòng)把字符串轉(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
這個(gè)SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID為數(shù)字類型,dd.AREA為字符類型,相當(dāng)于這樣on(1='1')的判斷,這時(shí)候就會(huì)自動(dòng)吧字符串的'1'轉(zhuǎn)換為數(shù)字類型再比較的。
但是也有弊端,一旦字符類型轉(zhuǎn)換為數(shù)字類型出錯(cuò)(說(shuō)明字符串的確就非數(shù)字組成的),SQL就會(huì)拋出異常。
SQL SERVER 2005中有判斷字段是否為數(shù)字的函數(shù):
ISNUMERIC(字段名) -----假如字段是數(shù)字類型返回1,不是就返回0
但是好像有的時(shí)候不好使,比如:select isnumeric('3,34') 就返回1
說(shuō)明這個(gè)函數(shù)對(duì)字段值中全是數(shù)字但是數(shù)字間用“,”和“.”(逗號(hào)或點(diǎn))隔開的都視為數(shù)字了!
字符串要打引號(hào)的,數(shù)值型才不用打,最直接的方法是把你這些字符串換成具體的內(nèi)容自己拼接一下檢查,向你上面的string strsql="select * from jpsx_ddl where class= 城市"; 而城市是個(gè)字符串,所以要加單引號(hào)string strsql="select * from jpsx_ddl where class=' " + cls + " ' ";
以上回答你滿意么?
如樓上給的 單獨(dú)分割一部分 ? ?也可用下面的函數(shù) 分割出一個(gè)集合
--?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);--?取得第一個(gè)分隔符的位置
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,后面無(wú)論有多少都不管。
這就相當(dāng)于精確匹配查找,也就是pattern,expression完全相等。
[] 是指定某些特殊的字符。
[^] 除[]之外的字符串。
網(wǎng)站欄目:sqlserver字符串,sqlserver字符串連接
文章位置:http://chinadenli.net/article48/dsdgsep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)、外貿(mào)建站、全網(wǎng)營(yíng)銷推廣、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)