作为替代方案,CHARINDEX您可以使用PATINDEX并让它匹配a-z范围内的任何字符:
SELECT SUBSTRING(address, PATINDEX('%[a-z]%', address), 4) AS FirstFour
FROM customers
如果您有任何类似的地址,这将给出正确的结果51 32 church st,即一个数字后跟一个空格,后跟另一个数字。
此解决方案假定您使用 Microsoft SQL Server。
编辑:为 Oracle 添加了一个解决方案(使用 11g R2 测试)。
在 Oracle 中,您可以像这样使用正则表达式和REGEXP_SUBSTR函数:
SELECT
REGEXP_SUBSTR("Address",'[[:alpha:]]{4}') "FourChars",
INITCAP(REGEXP_SUBSTR("Address",'[[:alpha:]]{4}')) "FourCharsInitCap"
FROM customers
这将返回:
FOURCHARS FOURCHARSINITCAP
chur Chur
fook Fook
stat Stat