SQL选择括号外的所有内容

时间:2016-06-15 20:40:30

标签: sql substring

我的数据库中有很多行看起来像这样:

123 'text i want (textidontwant)'

我试图用我想要的文本从数据库中选择所有内容。

我知道我应该使用子字符串,但我不确定如何使用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

使用substr和locate或charindex

在mysql中

select substr(my_column, 1, locate('(', my_column))
from my_table 

在sqlserver中

select substring(my_column, 1, charindex('(', my_column)) 
from my_table  

答案 1 :(得分:0)

select ... where column_name like '%text that I want%' and column_name not like '%text that I do not want%'

假设子串匹配正常(%是通配符,至少在PostgreSQL中)

编辑:似乎我误解了这个问题,但我会在这里留下答案,以防它以某种方式帮助某人...... :)

答案 2 :(得分:0)

试试这个:

LEFT(column, CHARINDEX('(', column) - 1)

这将在列中获取字符串的左侧部分,在第一个打开括号的索引之前的一个字符处结束(

所以,

123 'text i want (textidontwant)'

将成为

123 'text i want '

请注意,尾随空格仍然存在!要删除尾随空格,请使用 RTRIM ,如下所示:

RTRIM(LEFT(column, CHARINDEX('(', column) - 1))

CHARINDEX 仅限T-SQL,如果您需要不同版本的SQL,请编辑您的代码。)