2016-02-19 75 views
0

我有一個名爲Person的表,其中每列都有字母'Person'作爲前綴;即PersonLastName,PersonAddress1,PersonCity等。我希望創建一個與Person具有相同結構但在列名稱上具有不同前綴的新表,例如XxxLastName,XxxAddress1,XxxCity。如果我使用SQL爲類似的表創建新列名稱

Create Table Like Person 

我會得到正確的結構,但從Person中獲得原始列名稱。當然,我可以重新命名所有列,但這是一項乏味的工作。有沒有辦法像Person一樣創建一個表格,並根據某些規則重命名列?

+2

請告訴我爲什麼你需要有一個前綴? –

+2

我認爲這個表格足夠前綴:'Person.FirstName'與'Person.PersonFirstName'是平等的(如果不是更有意義的話) –

+0

Ed,Rob,我有很多原因使用我自己的前綴。其中之一是我有一個廣泛的元數據類型的表,它不被MySql捕獲並且我自己維護。我有時需要根據前綴進行查找。另一個是在我調試時在我的代碼中輕鬆定位列名。第三是爲了我自己的內在清晰。數據庫非常複雜,我不想迷路。 –

回答

0

我不認爲你可以任意做。你可以像下面這樣使用1個語句來做,但是我不知道這樣做對你來說會比在簡單的CREATE TABLE LIKE查詢之後做更改更好。

You could do: 
CREATE TABLE Dog AS 
    (SELECT PersonFirstName AS DogFirstName, PersonLastName AS DogLastName FROM Person); 

另一種方式(顯然)是用SQL之外的另一種語言編寫腳本。

你可以做的另一件事就是讓現有的列名從桌子上

SELECT @colname := `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='YOURDATABASE' AND `TABLE_NAME`='YOURTABLE' limit 0, 1; 

然後用mysql子()砍下前綴。

set @chopped = substring(@colname, ....) 

然後將另一個mysql變量設置爲新的前綴。

set @newprefix = '' 

然後運行一個CREATE TABLE AS查詢並對變量(新的前綴+斬波列名稱)進行連接。這會很快變得複雜。

我認爲從別人的意見很明顯,你不應該嘗試在mysql中自動執行此操作。最好使用可以輕鬆運行邏輯的腳本。

+0

用什麼語言寫腳本? –