簡體   English   中英

TSQL-在字符串中查找值的首次出現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM