2013-03-07 20 views
0

我想知道我是否可以得到一些幫助。我在Postgresql中有以下功能,它旨在爲我提供一個「solrid」值,而不必每次將它存儲在數據庫中,並且基本上通過在值的開始處放置「A」來工作。將簡單的postgreSQL函數轉換爲Mysql

-- Setup Solrid Function 
CREATE OR REPLACE FUNCTION solrid(IN local_id INTEGER, OUT result TEXT) AS $$ 
DECLARE 
    database_id TEXT := 'A'; 
BEGIN 
    result := database_id || local_id::TEXT; 
END; 
$$ LANGUAGE PLPGSQL; 

現在我有我的數據庫遷移到MySQL,我想知道是否有人能告訴我怎麼可以把這個功能使用MySQL。

+0

你能提供樣品的輸入和預期的結果? – Rostyslav 2013-03-07 11:05:06

+4

僅供參考,不需要寫入PL/PgSQL,簡單的SQL函數就是'CREATE OR REPLACE FUNCTION solrid(integer)RETURNS text AS $$ SELECT'A'|| $ 1; $$ LANGUAGE SQL'。這會比以前快很多,並且通常可以被內聯。 – 2013-03-07 11:18:57

+0

這是一種讓我的工作表「id」進入solr_id而不必存儲solr_id的方法。作業「ID」可能是123,solr_id將是A123。 – Jimmy 2013-03-07 11:22:40

回答

1

這裏是在MySQL相同的功能:

DELIMITER // 

DROP FUNCTION IF EXISTS solrid // 

CREATE FUNCTION solrid(local_id INTEGER) RETURNS TEXT 
BEGIN 
    DECLARE database_id TEXT; 
    SET database_id = 'A'; 
    RETURN CONCAT(database_id, CAST(local_id AS CHAR)); 
END // 

DELIMITER ;