我的数据库中有很多行看起来像这样:
123 'text i want (textidontwant)'
我试图用我想要的文本从数据库中选择所有内容。
我知道我应该使用子字符串,但我不确定如何使用。
感谢您的帮助!
答案 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,请编辑您的代码。)