在SQL中使用带分隔符的子字符串

时间:2013-08-27 14:22:37

标签: sql sql-server

我试图返回以下子字符串,它的逗号分隔[只有一个逗号]

City-City-City, State-State-State

有时它只是一个城市和州,有时它不止一个[或两者]

基本上,我需要返回状态首字母传递逗号。 最好的方法是什么?我正在研究子字符串函数,但这看起来并不聪明。我发现了一个分离功能,但它看起来有点矫枉过正,我不喜欢使用我不理解的代码。

例如:

Cincinnati-Middletown, OH-KY-IN
Cleveland-Elyria-Mentor, OH
Abilene, TX

输出:

OH-KY-IN
OH
TX

感谢您的回答;感谢Sonam的出发点,我想通了。 这就是我得到的。 Haven没有调查它,但它似乎返回了正确的东西。

select substring(CBSAName,charindex(',',CBSAName)+1, LEN(CBSAName)) FROM CBSAMasterList

2 个答案:

答案 0 :(得分:7)

select substring('Abilene, TX',charindex(',','Abilene, TX')+2,2)

答案 1 :(得分:1)

<强>描述

MySQL SUBSTRING_INDEX()在指定的分隔符出现次数之前返回给定字符串中的子字符串。

当指定的数字为正数时,从最终分隔符的左侧返回的子字符串,当指定的数字为负数时,从最终分隔符的右侧返回。

如果指定的数字大于分隔符的出现次数,则返回的子字符串将是总字符串。如果指定的数字为0,则不会从给定的字符串中提取任何内容。 语法

SUBSTRING_INDEX(str, delim, count)

<强>参数

**Name  Description
str     A string.
delim   A delimiter.
count   An integer indicating the number of occurrences of delim.**
Example : MySQL SUBSTRING_INDEX() function

以下MySQL语句返回最终分隔符左侧的子字符串,即给定字符串“www.mytestpage.info”中的第二个分隔符(。)。计数从字符串的左边开始。

SELECT SUBSTRING_INDEX('www.mytestpage.info','.',2); 

enter image description here