我在將「真實世界」數據傳輸到我的模式時遇到了問題。 這實際上是我的數據庫課程的一個「項目」,他們給我們的表格與狗比賽結果。這個表格有一列,其中包含狗的名稱(它本身包括實際名稱和育種者的名字)以及關於出生國家,實際生活國家和出生年份的信息。 舉例爲「Lillycette [AU 2012]」或「Black Bear Lee [AU/AU 2013]」或「Lemon Ralph [IE/UK 1998]」。 我設法它走出的第一個字,並將其保存在split_part右列是這樣的:如果存在,則選擇字符串的中間部分。 Postgresql
INSERT INTO tblHund (rufname)
SELECT
split_part(name, ' ', 1) AS rufname,
FROM tblimport;
tblimport是我從CSV文件轉儲的數據表。 就像它應該那樣工作。 訪問與此名稱的第二部分失敗,因爲有時不存在第二部分,有時時有第二部分由兩個單詞組成。
這就是我現在堅持的地方。 我與子和正則表達式試了一下:沒有錯誤執行
INSERT INTO tblZwinger (Name)
SELECT
substring(vatertier from E'[^ ]*\\ (+)$')AS Name
FROM tblimport
WHERE substring(vatertier from E'[^ ]*\\ (+)$') != '';
上面的代碼,但實際上什麼也不做,因爲SELECT語句只是給空字符串回來。
花了我3個多小時才明白了這個正則表達式,但是當我看着它們時,我仍然覺得很愚蠢。
有沒有其他的方式來做到這一點。如果是這樣,給我一個提示。 如果不是我上面的表達有什麼問題?
感謝您的幫助。