我想选择地址字符串的前4个字母忽略数字或P.O.框。
例如,我在“customers”表中有一个数据库列“address”。
51 church st
在查询中,我只想忽略数字的“库尔”。它可以是任何数字。我对数字不感兴趣。另外,我不希望这只是一个记录。我希望每个记录都能实现这一点 例如,我有这些记录:
51 church st
6178 fookeral ave
597537 state ct
在我的1个查询中,我希望结果看起来像这样
Chur
Fook
Stat
如何在一个查询中获取此内容?
答案 0 :(得分:1)
CHARINDEX
函数允许您在另一个字符串中搜索字符串。使用它来查找空格字符的位置,然后取下面的4个字符。
以下是一个例子:
SELECT SUBSTRING([Address], CHARINDEX(' ', [Address]) + 1, 4)
FROM [Your_Table]
答案 1 :(得分:1)
作为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