直接用估計沒有,可以定義一個函數(shù)轉一下,MSSQL中有個stuff函數(shù)
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網頁空間、營銷軟件、網站建設、汶上網站維護、網站推廣。
在指定位置替換或增加字符,比如:
SELECT STUFF('12345678', 2, 3, 'abc')
SELECT STUFF('12345678', 2, 0, ':')
但只能插入一個位置。
建議自定義一個字符串處理函數(shù),然后在語句中調用吧
比如
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')
第二種情況可以先把字符串中的字母替換掉,然后再調用該函數(shù),建議還是通過前端程序來處理字符串。
在SQL SERVER 2005中,將表中字符串轉換為數(shù)字的函數(shù)共2個:
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其實,一般情況下沒有必要把字符串轉換為數(shù)字類型
假如需要比較兩個字段是否相等,但是一個字段為字符串類型,一個為數(shù)字類型,用“=”比較兩個值是否相等時,SQL SERVER會自動把字符串轉換為數(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為字符類型,相當于這樣on(1='1')的判斷,這時候就會自動吧字符串的'1'轉換為數(shù)字類型再比較的。
但是也有弊端,一旦字符類型轉換為數(shù)字類型出錯(說明字符串的確就非數(shù)字組成的),SQL就會拋出異常。
SQL SERVER 2005中有判斷字段是否為數(shù)字的函數(shù):
ISNUMERIC(字段名) -----假如字段是數(shù)字類型返回1,不是就返回0
但是好像有的時候不好使,比如:select isnumeric('3,34') 就返回1
說明這個函數(shù)對字段值中全是數(shù)字但是數(shù)字間用“,”和“.”(逗號或點)隔開的都視為數(shù)字了!
字符串要打引號的,數(shù)值型才不用打,最直接的方法是把你這些字符串換成具體的內容自己拼接一下檢查,向你上面的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
返回字符串在表達式expression里第一次出現(xiàn)的位置,起始值從1開始算,沒找就返回0
描述一下此函數(shù)的具體用法:
'%pattern%' 的用法類似于 like '%pattern%' 的用法,也就是模糊查找其pattern字符串是否是expression找到,找到并返回其第一次出現(xiàn)的位置。
查找pattern的結束所在expression的位置,也就是從后面匹配起查找。
查詢pattern首次出現(xiàn)的位置。
返回0,開頭找不到就返回0,后面無論有多少都不管。
這就相當于精確匹配查找,也就是pattern,expression完全相等。
[] 是指定某些特殊的字符。
[^] 除[]之外的字符串。
網站欄目:sqlserver字符串,sqlserver字符串連接
文章位置:http://jinyejixie.com/article48/dsdgsep.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網站、品牌網站建設、營銷型網站建設、外貿建站、全網營銷推廣、
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)