0

我想选择忽略数字或邮政信箱的地址字符串的前 4 个字母。

例如,我在“客户”表中有一个数据库列“地址”。

51 church st 

在查询中,我只想“chur”忽略数字。它可以是任何数字。我对数字不感兴趣。另外,我不希望这只是一张唱片。我希望每条记录都发生这种情况所以例如我有这些记录:

51 church st
6178 fookeral ave
597537 state ct

在我的 1 个查询中,我希望结果如下所示

Chur
Fook
Stat

我怎样才能在一个查询中得到这个?

4

2 回答 2

1

CHARINDEX函数允许您在另一个字符串中搜索一个字符串。用它来查找空格字符的位置,然后取以下 4 个字符。

这是一个例子:

SELECT SUBSTRING([Address], CHARINDEX(' ', [Address]) + 1, 4)
FROM [Your_Table]
于 2013-11-14T06:05:27.877 回答
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
于 2013-11-14T06:12:17.510 回答