假设我的表包含两个属性(列)。 “数字”和“字数”。我可以这样,每当我在“数字”列中插入数据“1”时,mysql表会在同一记录中的“Number in Words”列中自动填写“one”吗? 当我输入“3”时,mysql表会自动填写“Number in Words”列中的“three”。 “4”到“4”,“5”到“5”等等。
顺便说一下,不要被我的例子所吸引。我不想把数字翻译成单词形式;我真的只是在寻找一种创建某种if语句的方法。我会手动需要事先设定规则,“1”会让我“一个”,2“会让我”两个“,依此类推。
希望它有意义,因为我对mysql知之甚少。
答案 0 :(得分:1)
您应该可以使用After Insert Trigger
执行此操作。以下是After Insert触发器的示例:
http://www.roseindia.net/sql/trigger/mysql-trigger-after-insert.shtml
如果您在问题中说明了插入之前的规则,那么我会使用触发器。
答案 1 :(得分:0)
您可以使用逻辑创建一个函数,并将其用作第二列:
select number, number_to_words(number) as words
from t
更加精通:
如何使用来自JNK答案的略微修改的代码创建函数:
create function number_to_words (num int)
returns varchar(100) deterministic
return case num
when 1 then 'one'
when 2 then 'two'
when 3 then 'three'
when 4 then 'four'
when 5 then 'five'
when 6 then 'six'
when 7 then 'seven'
when 8 then 'eight'
when 9 then 'nine'
when 0 then 'zero'
else null
end
;
答案 2 :(得分:0)
另一个选项是CASE
语句。这在SQL Server
中有效,在MySQL
中也应该有效:
DECLARE @num INT
SET @num = 1
INSERT INTO MyTable (Number, NumInWords)
SELECT @num, CASE WHEN @num = 1 THEN 'One'
WHEN @num = 2 THEN 'Two'
WHEN @num = 3 THEN 'Three'
WHEN @num = 4 THEN 'Four'
WHEN @num = 5 THEN 'Five'
WHEN @num = 6 THEN 'Six'
WHEN @num = 7 THEN 'Seven'
WHEN @num = 8 THEN 'Eight'
WHEN @num = 9 THEN 'Nine'
WHEN @num = 0 THEN 'Zero'
ELSE NULL
END