我有一个表字段的Datatype
是numeric(10, 1)
。该字段存储AmountPaid
和用户更喜欢像78,234,673
之间的输入与逗号的数量值,因为这是他们已经习惯了的东西,否则会作出了很多错误。如何允许用户输入逗号作为将存储在sql server 2005数字字段中的值?
有没有一种方法,我可以允许逗号的值,但在保存时删除它们,或者有什么办法可以将它们存储在SQL-SERVER
而不更改DATATYPE
?
我有一个表字段的Datatype
是numeric(10, 1)
。该字段存储AmountPaid
和用户更喜欢像78,234,673
之间的输入与逗号的数量值,因为这是他们已经习惯了的东西,否则会作出了很多错误。如何允许用户输入逗号作为将存储在sql server 2005数字字段中的值?
有没有一种方法,我可以允许逗号的值,但在保存时删除它们,或者有什么办法可以将它们存储在SQL-SERVER
而不更改DATATYPE
?
Double.Parse(TextBox1.Text)是我一直在寻找。
目前还不清楚您如何解析UI中的值或解析它们的类型,但您可能会发现NumberStyles.AllowThousands
正是您所追求的。我假设你是解析用户输入一个数字,传递一个到SQL Server作为参数值,而不是仅仅把它放置在SQL逐字...如果不是,那是使第一次变化。
我不知道你以后是什么,但如果你想基本上传入SQL一个整数的数组,你有没有想过传入你有的字符串(这似乎是在逗号分隔值),然后将它们分开转换为您在SQL中需要的值。然后将它们放在所需的表格中。
我不得不做类似的东西几天以前,但它是不具有分割功能,所以必须创建一个Oracle数据库。代码如下,你不应该将它翻译成SQL Server。
CREATE OR REPLACE PACKAGE SPLIT_FNC IS
-- Create a Type to be used as a temp table
TYPE strArray IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
FUNCTION SPLIT_STR(word IN VARCHAR2) RETURN strArray;
END;
CREATE OR REPLACE PACKAGE BODY SPLIT_FNC IS
FUNCTION SPLIT_STR(word IN VARCHAR2) RETURN strArray IS items strArray;
temp NUMBER;
delim CHAR := ',';
start_index NUMBER := 1;
end_index NUMBER := -1;
BEGIN
temp := 1;
-- If INSTR can not find a match it will return 0
WHILE end_index != 0 LOOP
-- Find location of next comma
end_index := INSTR(word, delim, start_index, 1);
CASE
WHEN
end_index = 0
THEN
-- Catch the last value
items(temp) := SUBSTR(word, start_index);
ELSE
-- Get substring of start to next comma
items(temp) := SUBSTR(word, start_index, end_index - start_index);
END CASE;
start_index := end_index + 1;
temp := temp + 1;
END LOOP;
RETURN items;
END SPLIT_STR;
END SPLIT_FNC;
希望这是有帮助的 - 安口
用户如何输入数字? SQL Server不关心逗号和点,而是用户界面应用程序。无论如何,解决方案是让用户在他的电脑上选择所需的区域设置(包括数字格式)。如果他使用的应用程序不尊重它,它应该被修复。 –