我需要一個創建的函數(EscapeAmpersand)。該函數應該帶1個varchar(255)參數。它應該返回一個varchar(255)參數。該功能的目的是接受輸入,將‘&’
替換爲‘&’
並返回結果。我需要幫助創建一個TSQL函數
實例:
輸入:‘my dog & me’
返回:‘my dog & me’
輸入:‘my dog and me’
返回:‘my dog and me’
我需要一個創建的函數(EscapeAmpersand)。該函數應該帶1個varchar(255)參數。它應該返回一個varchar(255)參數。該功能的目的是接受輸入,將‘&’
替換爲‘&’
並返回結果。我需要幫助創建一個TSQL函數
實例:
輸入:‘my dog & me’
返回:‘my dog & me’
輸入:‘my dog and me’
返回:‘my dog and me’
標量值函數:
CREATE FUNCTION fReplaceAmpersand (@InputString VARCHAR(255))
RETURNS VARCHAR(1000)
AS
BEGIN
RETURN REPLACE(@InputString, '&', '&')
END
GO
用法:
SELECT dbo.fReplaceAmpersand(MyText)
FROM MyTable
從性能的角度來看,如果你的表是非常大的,你會更好使用表值函數和OUTER APPLY:
CREATE FUNCTION fReplaceAmpersand (@InputString VARCHAR(255))
RETURNS TABLE
AS
RETURN
SELECT REPLACE(@InputString, '&', '&') AS OutputString
GO
-- ----------------------------------------------------
SELECT a.OutputString
FROM MyTable m
OUTER APPLY dbo.fReplaceAmpersand(m.MyText) a
無順序表值函數可以操作幾個時間比標量值更快。
謝謝羅素福克斯 –
NP,很高興提供幫助。請注意,返回的值較大,因爲對於每個替換操作,通過添加「amp;」可以使字符串長四個字符。從技術上講,它應該返回varchar(1275),以防255符號傳遞,但這似乎很實用。如果你偏執,你可以將它改爲左(REPLACE ...,1000)。 –
REPLACE(input,'&','&'||'amp')
這就是'REPLACE()'用於......使用或包裝。 –
這是更好地由表示層處理的那種東西。內置的函數可以在大多數情況下使用,如果不是所有與Web相關的編程語言和環境都可以做得更好。 –
這個作業是?如果是這樣,請注意,如果你只是讓人們爲你寫信,你就不會學到太多東西。 – halfer