Quantcast
Channel: VBForums - Database Development
Viewing all articles
Browse latest Browse all 2918

Pattern matching for ASCII characters only

$
0
0
I'm trying to write a function that strips out all non-ASCII characters in a field when I select it, but I'm having trouble with the pattern matching. I've tried this (using the collation statement to remove the diacritics):

Code:

Create Function dbo.udfRemoveTroublesomeCharacters  (@IncomingText  VarChar(1000))
Returns VarChar(1000)
As
Begin

    Select  @IncomingText  =  @IncomingText  Collate SQL_Latin1_General_CP1253_CI_AI
    Declare @KeepValues    As  VarChar(50)
    Set    @KeepValues =  '%[' + CHAR(32) + '-' + CHAR(126) + ']%'
   
    While PatIndex(@KeepValues, @IncomingText) > 0
        Set @IncomingText = Stuff(@IncomingText, PatIndex(@KeepValues, @IncomingText), 1, '')
   
    Return @IncomingText
End

Go

However, when I test it using this:
Code:

Select dbo.udfRemoveTroublesomeCharacters('ars;tlkjDSFGHSDFGÉ hq4é59’87nq34[5vui$"£%^"$%^"(*345v')
It returns this: arstlkjDSFGHSDFGEhq4e59’87nq345vui£345v

As you can see, that still allows the character ’ to come through despite the fact that its ASCII code is 146. Conversely, it removes something like ; which has an ASCII code of 59.

Short of individually listing each character that's allowed, how can I get it to stick to the range I've asked for?

Thanks...

Viewing all articles
Browse latest Browse all 2918

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>