我需要为名为AddrZip的列运行一个简单的select语句,以显示列中第一个空格后包含“1/2”的所有记录。在Access 2007中,它将是:**Left([Names],InStr(1,[Names]," ")-1)
,但无法在SQL 2005中找到如何执行此操作。所有帮助将不胜感激。
答案 0 :(得分: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
如果您希望找到'1/2'
出现紧接的' '
,其中' '
是字符串中的第一个空格,那么使用以下代码:
SELECT *
FROM [Addresses]
WHERE CHARINDEX(' ', [AddrZip]) > 0
AND CHARINDEX(' ', [AddrZip]) = CHARINDEX(' 1/2', [x].[AddrZip])
尽可能避免使用LIKE
运算符。众所周知,它们很慢。
答案 1 :(得分:0)
试试这个 -
select * from table where addrZip like '%\ 1/2%' escape '\'