我可以让我的表根据同一记录中的不同数据自动创建数据吗?

时间:2011-07-19 15:19:26

标签: mysql sql

假设我的表包含两个属性(列)。 “数字”和“字数”。我可以这样,每当我在“数字”列中插入数据“1”时,mysql表会在同一记录中的“Number in Words”列中自动填写“one”吗? 当我输入“3”时,mysql表会自动填写“Number in Words”列中的“three”。 “4”到“4”,“5”到“5”等等。

顺便说一下,不要被我的例子所吸引。我不想把数字翻译成单词形式;我真的只是在寻找一种创建某种if语句的方法。我会手动需要事先设定规则,“1”会让我“一个”,2“会让我”两个“,依此类推。

希望它有意义,因为我对mysql知之甚少。

3 个答案:

答案 0 :(得分:1)

您应该可以使用After Insert Trigger执行此操作。以下是After Insert触发器的示例:

http://www.roseindia.net/sql/trigger/mysql-trigger-after-insert.shtml

MySql Create Trigger

如果您在问题中说明了插入之前的规则,那么我会使用触发器。

答案 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