如何允许用户在将存储在sql server 2005数字字段中的值中输入逗号?
本文关键字:输入 字段 2005 用户 何允许 存储 sql server 数字 | 更新日期: 2023-09-27 18:10:02
我有一个表字段,其Datatype
是numeric(10, 1)
。这个字段存储AmountPaid
,用户更喜欢像78,234,673
一样输入中间带逗号的Amount Value,因为这是他们习惯的,否则他们会犯很多错误。
是否有一种方法,我可以允许逗号在值中,但在保存时删除它们,或者有一种方法,我可以继续并将它们存储在SQL-SERVER
而不改变DATATYPE
?
不清楚您如何解析来自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;
Ankou
Double.Parse(TextBox1.Text)就是我要找的。