2012-06-24 70 views
1

我需要合併字段,然後在文本字段的中間修剪掉多餘的空格。使用Access對我來說很簡單,但創建一個SQL函數並不能解決我的問題。這是我如何在Access中完成的,任何能夠幫助我創建SQL函數的人?SQL全部修剪功能 - Access/VBA代碼我可以做到這一點,但我不知道SQL的功能

在VBA Access查詢我可以在查詢下面的代碼做到這一點:

FullTrim([tblLeadsResi].[House Number] & [tblLeadsResi].[Street] & " " & 
    [tblLeadsResi].[Street Suffix] & " " & [tblLeadsResi].[Post-directional] & 
    IIf(Not IsNull([tblLeadsResi].[Apartment Number])," #" & 
    [tblLeadsResi].[Apartment Number],"")) 

模塊代碼的訪問權限:(基本上,如果它不添加第一個空間的雙重空間回)

Public Function FullTrim(stText As String) As Variant 
Dim intLen As Integer, stPart As String, stBlank As String, stNewText As String 

    ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    ' ++++ Takes any spaces away from a Text Value  ++++ 
    ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

    If IsNull(stText) Or stText = "" Then 
     FullTrim = "" 
    Else 
     For intLen = 1 To (Len(stText) - 1) 
      stPart = Mid(stText, intLen, 1) 
      stBlank = Mid(stText, intLen, 2) 
      If stBlank <> " " Then 
       stNewText = stNewText & stPart 
      End If 
     Next intLen 

     intLen = Len(stText) 
     stPart = Mid(stText, intLen, 1) 
     stNewText = stNewText & stPart 

     stNewText = Trim(stNewText) 
     FullTrim = stNewText 
    End If 
End Function 
+0

問題是我必須爲數據添加空格來合併字段,但有些字段是空白的。我實際上正在破壞數據來合併字段,因爲我並不總是有街道後綴或方向數據。 我試圖通過將幾個字段合併爲一個(我購買潛在顧客並且他們以此方式)來清理數據 – Crazyd

+1

SQL並不意味着SQL Server。 Oracle和Access在衆多其他數據庫中都有自己的SQL版本。如果你想要一個SQL Server的答案,請使用SQL服務器標籤,而不是通用的SQL標籤。 – Fionnuala

+0

A)抱歉,我添加了通用SQL標記以及SQL-Server標記;我是這個網站的新手。 B)我是SQL-Server的新手,如果你想給我一個如何更好地連接它的例子,我將不勝感激。 C)所提供的信息將幫助我將來的數據導入我首先獲得Full Trim in Access的原因是我從許多來源獲得了導出數據並且必須清理它們的數據。 – Crazyd

回答

1

創作

CREATE FUNCTION dbo.FullTrim(@Value NVARCHAR(MAX)) 
RETURNS NVARCHAR(MAX) 
AS 
BEGIN 
    DECLARE @Subs NVARCHAR(6) 
    SET @Subs = '[email protected]$$#%' -- Make this some string you will never have in your data 
    RETURN LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(@Value, ' ', ' ' + @Subs), @Subs + ' ', ''), @Subs, ''))) 
END 

用法

SELECT dbo.FullTrim(' This is a  string  with many spaces ') 

結果

This is a string with many spaces 
+0

謝謝你的幫助;我很感激。 – Crazyd

+0

我可以問你一件事嗎?...在​​VBA中,我有IsNull()功能來檢查是否是空的它是否在SQL中是一樣的? – Crazyd

+1

在sql中是 IS NULL。你也可以使用isnull(expresion,value-if-null) – Charleh

0

試試這個功能:

CREATE FUNCTION [dbo].[FullTrim](@text nvarchar(max)) 
RETURNS nvarchar(max) 
AS 
BEGIN 
    RETURN replace(@text, ' ', '') 
END 

...然後傳遞所有領域孔卡tenated一起喜歡:

SELECT dbo.FullTrim([tblLeadsResi.House Number] + [tblLeadsResi.Street] + ...) 
FROM tblLeadsResi 
... 
相關問題