2015-12-14 19 views
11

私のテーブルには、ヘブライ文字(またはこのケースではR-T-L言語)と英語のもの(または数字)を含む文字列値があります。SQLを使用して左から右および右から左に言語が混在する文字列の文字を反転しますか?

英語の文字が逆になっているように見えます。 漂流123456 esrever sti fI kcehCです。 数字と英字が逆になっていますが、ヘブライ語のものは正常です。

組み込みのSQL関数を使用して、他のRTL文字の順序を維持しながら、英語の部分文字列(および数値)を識別して逆にするにはどうすればよいですか?任意の回避策は

は、私はしばらくの間で機能を実装することができると思うしかし、私はこれが動作する場合、私はわからないので、ヘブライ語の文字で働いたことがありません おかげ

+1

ここ受け入れ答えはあなたにいくつかの使用であってもよいです。http://stackoverflow.com/questions/22459446/how-to-fix-reversed-arabic-characters-mixed-with-english- in-sql-server – beercohol

+0

これは英語のみですか?フランス語、スウェーデン語、またはドイツ語のテキストであっても、二重字の代わりにエゼット文字を使用するとどうなりますか? – NicVerAZ

答えて

0

... :-)を行いますあなたが現在@SubTemp

  • s内の残りのテキストを保持する変数を処理されている部分文字列を保持するために@EngTemp
  • 変数を逆に英語の部分を保持するための変数が必要になります

    • ループ使用PATINDEX

      • 文字列入力してください:

      手順@Out出力変数が

    • まだ@SubNext
    • 、現在の部分文字列の長さを保持する変数を処理する必要がある@Len
    • ことトリング、@SubTempにおける特許インデックスストアにPATINDEX( '%[^ AZ]%'、@SubNext)> 0
    • サブながら@SubNext に入れて、またPATINDEX
    • に@SubNextトリム3210
    • @Lenに@SubTempの長さを格納します。
    • @Len> 1の場合は、 @Out = @Out + @EngTemp + @SubTempを設定します。 @EngTemp = '' を設定します(この手順では、英語の文字列が行末ではない可能性があると想定しています)。
    • if @Len = 1; @EngTemp = @SubTemp + @EngTemp
    • を@Len = 0に設定します。

    は私の落書き「はdoesnの場合、私は、私はいくつかの時間とポスト実際のコードを持っているときに、この一緒にプレイしようとしてごめんなさい(この時点でループも閉じる必要があります)@Out = @Out + @EngTemp 設定しますどんな意味ですか

  • 1

    私はあなたの文字列全体が逆転していると私は信じており、ヘブライ語が正しい順序で表示されているという事実は実際には異なる問題の結果です。私が疑うことは、ヘブライ語が非語彙順に格納されていることです。

    理論的には、文字列を逆にしてSQL Serverにアラビア語の単語を左から右に表示させるだけで、問題を解決できるはずです。これは、次のようにあなたの文字列の前面と背面に特殊文字を追加することによって行われます。

    DECLARE @sourceString NVARCHAR(100) = N'123456 בדיקה esrever sti fI kcehC'; 
    
        DECLARE @reversedString NVARCHAR(4000) = nchar(8237) + REVERSE(@sourceString) + nchar(8236) 
    
        SELECT @reversedString; 
    
    0

    あなたがDBにテキストフィールドに文字のASCII値を取得するためのSQL ServerにASCII関数を使用することができます。 ascii値を取得したら、有効な英語の表示文字と数字の範囲と比較します。それ以外はヘブライ文字と見なすことができます。

    また、必要に応じて文字列を反転させるために、SQL Serverに自動的にREVERSE関数が存在します。

    次のリンクにはいくつかのサンプルコードがあります。

    http://www.sqlservercurry.com/2009/09/how-to-find-ascii-value-of-each.html

    関連する問題