2

AddrZipという列に対して単純なselectステートメントを実行して、列の最初のスペースの後に「1/2」を含むすべてのレコードを表示する必要があります。Access 2007では、次のようになります。
**Left([Names],InStr(1,[Names]," ")-1)ただし、SQL2005でそれを行う方法を見つけることができません。すべてのヘルプに感謝します。

4

2 に答える 2

1

まず、次のレコードを探します' '

CHARINDEX(' ', [AddrZip]) > 0

次に、の後'1/2'発生するレコードを探します' '

CHARINDEX('1/2', [AddrZip], CHARINDEX(' ', [AddrZip])) > 0

SELECT  *
FROM    ( SELECT    *
          FROM      [Addresses]
          WHERE     CHARINDEX(' ', [AddrZip]) > 0
        ) x
WHERE   CHARINDEX('1/2', [x].[AddrZip], CHARINDEX(' ', [AddrZip])) > 0

この「簡略化された」バージョン動作する可能性があります:

SELECT  *
FROM    [Addresses]
WHERE   CHARINDEX(' ', [AddrZip]) > 0
        AND CHARINDEX('1/2', [x].[AddrZip], CHARINDEX(' ', [AddrZip])) > 0

文字列の最初のスペースである a の直前にある の出現箇所を検索する場合は、次のコードを使用'1/2'し ます。' '' '

SELECT  *
FROM    [Addresses]
WHERE   CHARINDEX(' ', [AddrZip]) > 0
        AND CHARINDEX(' ', [AddrZip]) = CHARINDEX(' 1/2', [x].[AddrZip])

LIKEオペレーターはできるだけ避けてください。彼らは悪名高いほど遅いです。

于 2010-10-22T16:52:46.653 に答える
0

これを試して -

select * from table where addrZip like '%\ 1/2%' escape '\'
于 2010-10-22T16:49:08.347 に答える