我有一组数字1-55。在每个(x.1,x.2和x.3)之间包括三个小数,其中数字的值不重要,但是字符串是。 (即1,1.1,1.2,1.3,2,2.1,2.2,2.3,3,...... 55)。我无法将整数的格式保持为整数字符(即1,2,3,4 ......而不是1.0,2.0,3.0,4.0)。这是完全不同的两件事。
我很确定我需要能够将这个集存储为char / varchar / text但是当我无法弄清楚如何将它们全部存储为字符串时很难。
任何帮助将不胜感激! 谢谢!
编辑:可能是相关的,我道歉,因为我认为我的问题在面值已经完成。它不是。将至少有30列包含与这些数字相关的频率。在比较过程中将使用数字(1-55和上面列出的小数)来返回频率(即获得与22.3或30匹配的频率)。在某些情况下,与我的表格进行比较的值将包含字母和符号,因此我认为我需要将这些值存储为字符而不是数字。显式地,1,1.1,1.2,1.3,2,2.1,2.2等,最多55作为varchar(4)而不是小数(3,1)因为小数(3,1)不能与varchar比较(4)......可以吗?
我遇到的问题是,当我将值1,2,3作为varchar(4)数据类型添加到表并查询它时,sql返回1,2,3但是当我还添加1.1,1.2和1.3时然后查询它,我的数字1,2,3返回1.0,2.0和3.0。我想也许更好的问题是,1作为varchar数据类型与1.0 varchar数据类型相同吗?我在想不。当我将其他数据添加到之后具有.1,.2或.3的表时,如何强制字符1保持为1而不更改为1.0?
答案 0 :(得分:1)
你的问题令人困惑,但是,请检查下面的代码并附上一些评论,如果它可以帮助你达到你想要的效果。
-- Populate numbers as varchar(4)
DECLARE @Numbers TABLE (Number varchar(4));
DECLARE @Number INT
SET @Number = 1
WHILE @Number <= 55
BEGIN
INSERT INTO @Numbers VALUES(@Number);
INSERT INTO @Numbers VALUES(@Number + 0.1);
INSERT INTO @Numbers VALUES(@Number + 0.2);
INSERT INTO @Numbers VALUES(@Number + 0.3);
SELECT @Number = @Number + 1
END
SELECT Number FROM @Numbers
--You can compare decimal value with table
DECLARE @DecimalNumber AS decimal(3,1)
SET @DecimalNumber=22.3
SELECT Number FROM @Numbers WHERE Number=@DecimalNumber
SET @DecimalNumber=30
SELECT Number FROM @Numbers WHERE Number=@DecimalNumber
--You can also compare varchar value with table
DECLARE @VarcharNumber varchar(4)
SET @VarcharNumber='40'
SELECT Number FROM @Numbers WHERE Number=@VarcharNumber
如果您能进一步澄清和/或提供示例代码/数据,请与我们联系。