2

我需要为名为 AddrZip 的列运行一个简单的选择语句,以显示列中第一个空格之后包含“1/2”的所有记录。在 Access 2007 中它将是:
**Left([Names],InStr(1,[Names]," ")-1),但在 SQL 2005 中无法找到如何执行此操作。所有帮助将不胜感激。

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', 其中a是字符串中的第一个空格,请使用以下代码:' '' '

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 回答