如何允许用户在将存储在sql server 2005数字字段中的值中输入逗号?

本文关键字:输入 字段 2005 用户 何允许 存储 sql server 数字 | 更新日期: 2023-09-27 18:10:02

我有一个表字段,其Datatypenumeric(10, 1)。这个字段存储AmountPaid,用户更喜欢像78,234,673一样输入中间带逗号的Amount Value,因为这是他们习惯的,否则他们会犯很多错误。

是否有一种方法,我可以允许逗号在值中,但在保存时删除它们,或者有一种方法,我可以继续并将它们存储在SQL-SERVER而不改变DATATYPE ?

如何允许用户在将存储在sql server 2005数字字段中的值中输入逗号?

不清楚您如何解析来自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)就是我要找的。