我正在執行查詢,希望從已除去所有前導空間和後續空格的字符串中提取最左側的n個字符。一個例子是:使用MS SQL Server在ColdFusion中創建SQL用戶定義的函數
Select SUBSTRING(LTRIM(RTRIM(somefield)), 0, @n) AS mydata
FROM sometable
這是我能想到在SQL Server上完成的唯一方法。
我以前從未編寫過一個UDF,但我想,如果我只是一個SQL Server上的工作,我可以創建一個用戶定義的函數,例如:
CREATE FUNCTION udfLeftTrimmed
(
@inputString nvarchar(50),
@n int
)
RETURNS nvarchar(@n)
AS
BEGIN
RETURN SUBSTRING(LTRIM(RTRIM(@inputString)), 0, @n);
END
然後我可以做這樣的事情:
Select udfLeftTrimmed(somefield,6) AS mydata
FROM sometable
這是至少有點容易閱讀和理解。
問題是,我如何在ColdFusion中創建UDF?我在ColdFusion中對SQL用戶定義函數的所有搜索只是給了我如何創建ColdFusion函數。
您可以通過在ColdFusion中使用''標籤執行CREATE FUNCTION ...語句來簡單地創建MSSQL函數。 –
Alex
我會將數據源放在什麼位置?它不會接受空的或沒有數據源 - 導致錯誤。另外,我會用cfquery名稱還是函數名稱來調用它? – abalter
您可以使用指向要創建函數的數據庫的數據源。我並不認爲當您提出第二個問題時,您會發現''有效。它只是一個將SQL語句傳遞給數據庫的機制。 'name'屬性給出標籤,當做SELECT查詢時,記錄集被DB返回時,CF有一個變量名用來引用它。在傳遞「CREATE FUNCTION」語句時,您甚至不會使用'name'屬性,因爲它不會返回任何有用的內容。一旦在DB *中創建函數*,那麼您可以在您的''標籤中的SQL .. –