我有一堆在我的數據庫行,看起來像這樣的外:SQL選擇所有的括號
123 'text i want (textidontwant)'
,我試圖從與我想要的文字數據庫中選擇一切只要。
我知道我應該使用子字符串,但我不知道如何。
感謝您的幫助!
我有一堆在我的數據庫行,看起來像這樣的外:SQL選擇所有的括號
123 'text i want (textidontwant)'
,我試圖從與我想要的文字數據庫中選擇一切只要。
我知道我應該使用子字符串,但我不知道如何。
感謝您的幫助!
使用SUBSTR和定位或CHARINDEX
在MySQLselect substr(my_column, 1, locate('(', my_column))
from my_table
在SQLSERVER
select substring(my_column, 1, charindex('(', my_column))
from my_table
'select subtring(my_column,1,charindex('(',my_column)) from my_table'for SQL Server –
@PirateX謝謝..我已經更新了答案,但您應該發佈您的評論,如答案,以便可以正確評分 – scaisEdge
我不確定是否值得另一個答案,更好的是更新你的,下次會照顧的 –
select ... where column_name like '%text that I want%' and column_name not like '%text that I do not want%'
假設子串匹配是OK(%
是通配符,至少在PostgreSQL的)
編輯:看來我誤解了這個問題,但我會離開這裏的答案的情況下,它可以幫助別人事情是這樣的...... :)
這仍然會返回完整的字符串,「%」符號用於在模式前後定義通配符(丟失的字母) –
啊,然後我誤解了 - 我想他想要所有包含一個部分但不包含其他部分的行,而不是他想要的實際子字符串... – ToVine
試試這個:
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請編輯您的標記。)
工作痘痘更提供一個更好的例子。請閱讀[** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t這裏是[** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/),瞭解如何提高您的問題質量並獲得更好的答案。 –
哪個數據庫? – abhi
這很大程度上取決於你正在使用的數據庫類型,但通常情況下,如果你能保證第一個左括號是你不想要的分隔符,你可以做一個子字符串(field,0,<無論你的數據庫的函數('(')) –