2013-11-20 45 views
0

之前的一切,我需要做的是:"hi.my.name.is"SQL SELECT點

輸出:

點之前選擇所有的 「喜」

財產以後這樣的:preg_replace('/^([^.]*).*$/', '$1', "hi.my.name.is");

但在SQL ..

+1

[SELECT SUBSTRING( '' 欄,1,LOCATE(山口) - 1)導致FROM表名(http://sqlfiddle.com/#! 2/7ca8c/5) –

+0

從重複的問題來看,解決方案是使用一個用戶定義的函數,它可以在MySQL中引入正則表達式替換。這裏的答案是使用substr,它絕對不是使用正則表達式。我認爲他們錯過了這個標記......這正是你所要求的:https://launchpad.net/mysql-udf-regexp –

回答

0

試試這個:

DECLARE @mystring varchar(30) = 'hi.my.name.is'; 
SUBSTR(@mystring, 0, CHARINDEX ('.', @mystring)); 
+0

這隻適用於特定情況 – Aris

+0

爲什麼?對我來說,它運作良好。 –

0
+0

正如我在其他答案中指出的那樣,這種解決方案忽略了商標。 'SUBSTRING_INDEX'和'SUBSTR'幾乎不像正則表達式匹配那麼靈活。 –

+0

不確定爲什麼答案完全符合問題中指定的內容,因此被拒絕投票。 – DickieBoy

+1

@Chris,現在的老問題,但OP沒有任何建議他需要做複雜的匹配,所包含的正則表達式甚至暗示他所需要的只是一個子字符串。解決方案對我來說很好。 – OGHaza

-1

這會幫助你的。

SELECT SUBSTR('hi.my.name.is', 0, INSTR('hi.my.name.is', '.')-1) AS output 
FROM TABLENAME 

這將輸出返回作爲hi

+0

這不會給我任何東西,請複製麪食verbitum – DickieBoy

+0

我認爲你錯過了標記。他的目標是將正則表達式應用於列。您的解決方案對於示例字符串非常具體,但不夠靈活,無法與充滿變化的整個數據庫競爭。 –

+0

但是這個想法是他不會像我那樣把一個單獨的靜態字符串放在那裏。你可以很容易地將它變成一個正在動態設置的變量。 –