あなたのアプローチにはいくつかの問題があります。まず第一に、引数の valueを使用することはできません 基になる列を参照します。良い点は、プリペアドステートメントを使用できることです。 この回避策として。
2番目の問題は、MySQL関数がプリペアドステートメントの使用を許可しないことです。この制限を回避するには、代わりにストアドプロシージャを使用する必要があります。例として:
CREATE PROCEDURE test_func (IN col1 varchar(100), OUT res int)
BEGIN
SET @s=CONCAT('SELECT ',col1,' INTO @res FROM yourtable WHERE id=1');
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SELECT @res INTO res;
END