0

簡素化する必要があるクエリがあります。クエリの一部を次に示します。

SELECT
    LEFT(MLIS.REQUESTOR_FIRST_NAME, CharIndex( ' ', MLIS.REQUESTOR_FIRST_NAME + ' ' ) - 1)

    , CharIndex( ' ', LEFT(MLIS.REQUESTOR_FIRST_NAME, CharIndex( ' ', MLIS.REQUESTOR_FIRST_NAME + ' ' ) - 1) + ' ' ) - 1)

    +REPLICATE(' ',25),25)+
    LEFT(' '+REPLICATE(' ',20),20)+
    LEFT(

    LEFT(

    LEFT(MLIS.REQUESTOR_LAST_NAME, CharIndex( ',', MLIS.REQUESTOR_LAST_NAME + ',' ) - 1)

    , CharIndex( ',', LEFT(MLIS.REQUESTOR_LAST_NAME, CharIndex( ',', MLIS.REQUESTOR_LAST_NAME + ',' ) - 1) + ',' ) - 1)

私がやっている理由はreplicates、固定長の文字列を構築しているためです。各列は固定長である必要があります。

上記のクエリに加えて、MLIS.REQUESTOR_FIRST_NAMEandが出現するたびに、次のことMLIS.REQUESTOR_LAST_NAMEを行う必要があります。

REPLACE(REPLACE(MLIS.REQUESTOR_FIRST_NAME,', MD',''),',MD','')

REPLACE(REPLACE(MLIS.REQUESTOR_LAST_NAME,', MD',''),',MD','')

REPLACESこれらをクエリに含めて全体を単純化するにはどうすればよいですか?

あなたの指導と親切な助けに感謝します。

4

2 に答える 2

1

サブクエリで共通ビットを選択します...(もう少しあります)

SELECT
    LEFT(REQUESTOR_FIRST_NAME, fname_idx - 1)
    , CharIndex( ' ', LEFT(MLIS.REQUESTOR_FIRST_NAME, fname_idx - 1) + ' ' ) - 1)
..
FROM ( select CharIndex( ' ', MLIS.REQUESTOR_FIRST_NAME + ' ' ) fname_idx, REQUESTOR_FIRST_NAME from...
于 2012-07-25T16:19:44.570 に答える
1

サブクエリを使用すると、構文に役立ちます。さらに、CHAR() にキャストして、文字列を特定の長さにパディングおよび切り詰めることができます。

私はあなたが望むことを次のようにすると思います:

SELECT cast(fname as char(25)) + ' ' + cast(lname as char(25))
from (select replace(replace(LEFT(MLIS.REQUESTOR_FIRST_NAME,
                                  CharIndex(' ', MLIS.REQUESTOR_FIRST_NAME + ' ' ) - 1
                                 ),
                             ',MD', ''),
                     ', MD', '') as fname,
             replace(relpace(left(MLIS.REQUESTOR_LAST_NAME,
                                  CharIndex(',', MLIS.REQUESTOR_LAST_NAME + ',' ) - 1),
                                  CharIndex(',', LEFT(MLIS.REQUESTOR_LAST_NAME,
                                                      CharIndex( ',', MLIS.REQUESTOR_LAST_NAME + ',' ) - 1) + ','
                                                               ) - 1
                                 ),
                             ',MD', ''),
                     ', MD', '') as lname

ただし、元のクエリをたどるのは難しく、構文エラーが発生する可能性があります。このクエリは、問題を解決するためのガイダンスを提供することを目的としています。また、最終的な文字列が適切な長さになるように、連結の後にキャストを配置します。

于 2012-07-25T18:23:51.453 に答える