1. 程式人生 > >sql中使用replace函式用於update語句

sql中使用replace函式用於update語句

把表Mng_Auth_SiteMap裡的URL欄位裡的包含“BackEnd_Clean”的替換成“'BackEnd”,並且其他保持不變,如下:

UPDATE [BackEnd_DB].[dbo].[Mng_Auth_SiteMap]
SET       [URL] = replace(cast([url] as nvarchar(255)),'BackEnd_Clean','BackEnd')
WHERE [url] like '%BackEnd_Clean%'

說明:這裡是一cast函式主要是防止欄位[url]的資料型別不是字串型,你也可以使用下面的語句,其實也是正確的。
SET       [URL] = replace([url] ,'BackEnd_Clean','BackEnd')

=========================================================================

REPLACE
用第三個表示式替換第一個字串表示式中出現的所有第二個給定字串表示式。

語法
REPLACE ( ''string_expression1'' , ''string_expression2'' , ''string_expression3'' )

引數
''string_expression1''

待搜尋的字串表示式。string_expression1 可以是字元資料或二進位制資料。

''string_expression2''

待查詢的字串表示式。string_expression2 可以是字元資料或二進位制資料。

''string_expression3''

替換用的字串表示式。string_expression3 可以是字元資料或二進位制資料。

返回型別
如果 string_expression(1、2 或 3)是支援的字元資料型別之一,則返回字元資料。如果 string_expression(1、2 或 3)是支援的 binary 資料型別之一,則返回二進位制資料。

示例
下例用 xxx 替換 abcdefghi 中的字串 cde。

SELECT REPLACE(''abcdefghicde'',''cde'',''xxx'')GO
下面是結果集:

------------abxxxfghixxx(1 row(s) affected)

=========================================================================

CAST函式
CAST函式用於將某種資料型別的表示式顯式轉換為另一種資料型別。
語法:
CAST (expression AS data_type)
引數說明:
         expression:任何有效的SQServer表示式。
         AS:用於分隔兩個引數,在AS之前的是要處理的資料,在AS之後是要轉換的資料型別。
         data_type:目標系統所提供的資料型別,包括bigint和sql_variant,不能使用使用者定義的資料型別。
使用CAST函式進行資料型別轉換時,在下列情況下能夠被接受:
(1)兩個表示式的資料型別完全相同。
(2)兩個表示式可隱性轉換。
(3)必須顯式轉換資料型別。
如果試圖進行不可能的轉換(例如,將含有字母的 char 表示式轉換為 int 型別),SQServer 將顯示一條錯誤資訊。
如果轉換時沒有指定資料型別的長度,則SQServer自動提供長度為30。
例如:
SELECT CAST('ABCDE' AS NVARCHAR(3)) AS 結果
執行結果:
ABC
說明:將字串ABCDE的資料型別轉換為NVARCHAR型別,並且長度為3,所以執行結果為ABC而沒有顯示DE。


下面使用CAST函式將int型別的ytd_sales列轉換為char(20)列子:

SQL語句如下:
USE pubs
SELECT ytd_sales FROM titles
SELECT title, ytd_sales FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '15%'
AND type = 'trad_cook'
程式執行結果如圖1所示。

圖1  將int型別的ytd_sales列轉換為char(20)列子

建議:象cast, as 之類的都是sql 語句裡的關鍵字,在查詢分析器裡,選擇後,按SHIFT+F1就可以查詢幫助。