2016-07-17 3 views
0

とフィールドの先頭から連続する「X」の文字を削除します。 名前の値が1つ以上の連続した "x"文字で始まる場合、それらは除外されますが、後で同じ文字列に含まれる "x"を保持します。私はテーブルに<strong>名前</strong>という列が</strong><strong>チームと呼ばれていAccessクエリ

私は...

SELECT REPLACE(Name, 'x', '') FROM table 

を使用していた。しかし、それはそれはxJammy PricxJammy Pricにを変更するので、私が望む結果を与える、とP- CorpからxP-X Corpしません。私はだけを削除したい先頭のx文字。これらのサンプル値について

...

xxxJames 
xxxxxxxVikkie 
XXXJohnny 
xJakie 
xJammy Pricx 
xP-X Corp 

結果は...

James 
Vikkie 
Johnny 
Jakie 
Jammy Pricx 
P-X Corp 
+1

使用しているプログラミング言語に言及し、適切なタグを追加してください –

答えて

1

する必要があります私は無地のアクセスSQLおよび標準VBA機能であなたがやりたいかが表示されませんこれはクエリで使用できます。だから私はあなたのクエリのためのカスタム関数が必要になりますと思います。そしてその場合、正規表現のアプローチは簡単になります。パターンで

SELECT RegExpReplace([Name], '^[Xx]*', '') 
FROM Team; 

^[Xx]*^は、文字列の先頭と一致[Xx]一致するものX又はx文字、及び*は前の文字(X又はx)のゼロまたはそれ以上の一致を意味します。

この機能を標準モジュールに追加します。新しいモジュールの場合は、モジュールの名前を付けないでください。RegExpReplace; modRegExpReplaceは問題ありません。

Public Function RegExpReplace(ByVal varSource As Variant, _ 
     ByVal strPattern As String, _ 
     ByVal strReplace As String) As Variant 

'version 2016-07-17 

    Static re As Object 
    Dim varOut As Variant 

    If re Is Nothing Then 
     Set re = CreateObject("VBScript.RegExp") 
     re.Global = True 
     re.IgnoreCase = False 
    End If 
    re.Pattern = strPattern 
    varOut = Null 
    If Not IsNull(varSource) Then 
     varOut = re.Replace(varSource, strReplace) 
    End If 
    RegExpReplace = varOut 
End Function 
関連する問題