DB2中字符转数字的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DB2中字符转数字的问题相关的知识,希望对你有一定的参考价值。

select integer(trim(char(字符1))),integer(trim(char(字符2))) from 表1,表2 where 表1.字段A = 表2.字段A and 字符1 > 字符2,; sql只有这样执行才会成功,我想知道为什么where条件之后不能放字符转数字的integer方法,求大神指导

参考技术A 应该可以呀

select integer(trim(char(字符1))),integer(trim(char(字符2))) from 表1,表2 where 表1.字段A = 表2.字段A and cast(trim(char(字符1)) as bigint) > cast(trim(char(字符2)) as bigint),;

如何将 Google 输入的数字字符串转换为整数作为存储到 MySql DB 中?

【中文标题】如何将 Google 输入的数字字符串转换为整数作为存储到 MySql DB 中?【英文标题】:How to convert Google Input typed number String into integer as Store into MySql DB? 【发布时间】:2018-06-16 11:07:28 【问题描述】:

我想将谷歌输入的数字存储到列是整数的数据库中。当我想将它转换为整数时,它给我错误说输入字符串的格式不正确如何解决这个问题?

MySqlConnection con = new MySqlConnection("Server=syits03-pc;Database=Demo;Uid=root;Pwd=kbabu4668;CharSet=utf8;");
con.Open();
MySqlCommand cmd = new MySqlCommand("insert into tblnew(str,num,numstr) values(@str,@num,@numstr)", con);
cmd.Parameters.AddWithValue("@str", textBox1.Text);
MySqlCommand cmd1= new MySqlCommand("Select str from tblnew where id=1",con);
cmd.Parameters.AddWithValue("@num", Convert.ToInt32(cmd1.ExecuteScalar().ToString()));
cmd.Parameters.AddWithValue("@numstr", textBox3.Text);
object obj= cmd.ExecuteNonQuery();
con.Close();
if (obj != null)

    MessageBox.Show("Inserted");

【问题讨论】:

想必是Convert.ToInt32抛出的;所以:cmd1.ExecuteScalar().ToString() 是什么,你的机器运行在什么文化中? (如果这是文化格式问题)。如果你只做cmd.Parameters.AddWithValue("@num", cmd1.ExecuteScalar());,它不起作用吗? @Marc Gravell 那么如何解决这个文化形成问题 简单:不要将数字视为字符串;或者如果您必须:将正确的文化传递给格式/解析方法 【参考方案1】:

试试这个 using (SqlConnection con = new SqlConnection("Server = syits03 - pc; Database = Demo; Uid = root; Pwd = kbabu4668; CharSet = utf8; ")) SqlCommand cmd1 = new SqlCommand("Select top 1 str from tblnew where id -1", con); string num = cmd1.ExecuteScalar().ToString(); string cmdText = string.Concat("insert into tblnew(str, num, numstr) values(", textBox1.Text, ",", num, ",", textBox3.Text, ")"); SqlCommand cmd = new SqlCommand(cmdText, con); cmd.ExecuteNonQuery(); 您应该考虑的一些可能的问题是:

如果 cmd1 没有返回任何内容,因此将一个空白值传递给 @num,该怎么办? cmd.ExecuteNonQuery() 并不意味着返回任何内容,因此将其分配给对象可能不是最好的主意。相反,您可以将其放入 try/catch 中。例如try cmd.ExecuteNonQuery(); MessageBox.Show("Inserted"); catch (Exception ex) MessageBox.Show("Stored Proc failed with error: " + ex.ToString());

【讨论】:

【参考方案2】:

看起来你的 cmd.executescalar 有时可能会返回 null ,它会被 tostring() 函数转换为 "" 如果你不确定输入是否正确,这可能是错误出现的原因,你总是可以尝试使用 int.TryParse() 使用前请阅读函数

【讨论】:

以上是关于DB2中字符转数字的问题的主要内容,如果未能解决你的问题,请参考以下文章

DB2中截取字段以及排序问题

大型机中用于转置的 DB2 Sql [关闭]

db2报错信息为‘字符串函数中的长度或位置超出范围’是啥意思

oracle sql字符串转数字问题

有没有函数在SQL查询时将DB2数据库中一个数字型的字段转换为字符串类型?

DB2 TRIM 000000 到 0