[英]TSQL - Locating first occurrence of value in a string
我需要為名為AddrZip的列運行一個簡單的select語句,以顯示該列的第一個空格之后所有包含“ 1/2”的記錄。 在Access 2007中,它將是:
**Left([Names],InStr(1,[Names]," ")-1)
,但找不到如何在SQL 2005中執行此操作。感謝所有幫助。
首先,查找帶有' '
記錄:
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
運算符。 他們出了名的慢。
嘗試這個 -
select * from table where addrZip like '%\ 1/2%' escape '\'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.