0
我正在編寫一個腳本來從文件中提取和轉換SQL語句。我需要將SQL卸載從gupta sqlbase數據庫轉換爲SQLServer可以理解的SQL。這個替換爲什麼也會刪除一個空格字符?
一個任務是用兼容的名稱替換不允許作爲列名的關鍵字。
在以下代碼中$ commands是一個包含sql語句的數組ref。 (居然還有更多的代碼在這裏,但我提取它,因爲它不應該與此有關)
my @KeyWords = ("LEFT", "RIGHT", "PERCENT", "FILE", "PRINT", "CROSS", "PLAN", "TOP", "END", "FILE", "Default", "CHECK", "TEXT");
foreach $cmd (@$commands) {
foreach my $kw (@KeyWords) {
$cmd =~ s/\b$kw\b[^(]/_$kw/gi;
}
push @$converted, $cmd;
}
這工作對大多數語句,但在下面的命令"DEFAULT"
獲取與"_DEFAULT
,而不是"_DEFAULT"
取代。所以第二個引號丟失了。
CREATE TABLE SYSADM.SUBTYPE (ID_SUBTYPE INTEGER NOT NULL,
ID_TYPE INTEGER NOT NULL,
TYPE VARCHAR(1),
BEZEICH VARCHAR(60),
NUM_COLOR INTEGER,
NUM_TXTCOLOR INTEGER,
"DEFAULT" SMALLINT,
GENER_ARBA SMALLINT,
PROJEKTPLANUNG SMALLINT)
有沒有辦法修改正則表達式/替換,所以這不會刪除第二個引號?或者以其他方式?
工作正常,謝謝! – Luke