添加默认值为0.0的列

时间:2016-02-09 11:24:20

标签: sql sql-server tsql default

我在sql server中有一个表,但我想添加一个充满零的额外列 我这样做:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script>
        window.onload = function x() {
            Array1 = [{ "name": "a1", "value": "a1" }, { "name": "b1", "value": "b1" }];
            Array2 = [{ "name": "a2", "value": "a2", "array1": "a1" }, { "name": "b2", "value": "b2", "array1": "a1" }, { "name": "c2", "value": "c2", "array1": "b1" }];
            Array3 = [{ "name": "a3", "value": "a3", "array2": "a2" }, { "name": "b3", "value": "b3", "array2": "a2" }, { "name": "c3", "value": "c3", "array2": "a2" }, { "name": "d3", "value": "d3", "array2": "c2" }, { "name": "e3", "value": "e3", "array2": "c2" }];

            //create the table

            var table = document.getElementById("table");
            var mainTR = document.createElement("TR");
            table.appendChild(mainTR);
            var numRow = 0;
            var numColumn = 0
            for (var i = 0; i < Array1.length; i++) {
                var a1 = Array1[i];
                var td1 = document.createElement("TD");
                td1.style.width = '20px';
                mainTR.appendChild(td1);

                var label = document.createElement('label')
                label.htmlFor = i;
                label.appendChild(document.createTextNode(a1.name.toString()));
                var mybr = document.createElement('br');
                td1.appendChild(label);
                for (var j = 0, numColumn = 0; j < Array2.length; j++) {
                    var a2 = Array2[j];
                    if (a2.array1 == a1.name) {

                        if (i == 0) {
                            var tr = document.createElement("TR");
                            tr.id = "tr" + numRow;
                            numRow += 1;
                            table.appendChild(tr);
                        }
                        else {
                            var row = document.getElementById(("tr" + numColumn).toString());
                            //var tr = row.insertCell(i+1);
                            var tr = row.insertCell();
                        }


                        var td1 = document.createElement("TD");
                        td1.style.width = '20px';
                        tr.appendChild(td1);
                        var label = document.createElement('label')
                        label.htmlFor = i;
                        label.appendChild(document.createTextNode(a2.name.toString()));
                        var mybr = document.createElement('br');
                        td1.appendChild(label);
                        numColumn += 1;
                    }
                    for (var z = 0, numColumn = 0; z < Array3.length; z++) {
                        var a3 = Array3[z];
                        if (a3.array2 == a2.name) {
                            if (i == 0) {
                                var tr = document.createElement("TR");
                                tr.id = "tr" + numRow;
                                numRow += 1;
                                table.appendChild(tr);
                            }
                            else {
                                var row = document.getElementById(("tr" + numColumn).toString());
                                //var tr = row.insertCell(i+1);
                                var tr = row.insertCell();
                            }


                            var td1 = document.createElement("TD");
                            td1.style.width = '20px';
                            tr.appendChild(td1);

                            var label = document.createElement('label')
                            label.htmlFor = i;
                            label.appendChild(document.createTextNode(a3.name.toString()));
                            var mybr = document.createElement('br');
                            td1.appendChild(label);
                            numColumn += 1;
                        }
                    }
                }
            }
        }
    </script>
     <style>
            .table{
                border: 1px solid black;
                border-color:red;
            }
            td{ border: 1px solid black; }
        </style>
</head>
<body>
     <table id="table" style="width: 100%; font-size: 14px;">      
    </table>
</body>
</html>

当我DECLARE @var numeric(10,1) set @var = 0.0 SELECT tmp.a, tmp.b, @var INTO #tmp2 from #tmp1 as tmp 列得到0但我想要0.0

2 个答案:

答案 0 :(得分:2)

您需要为列命名,这将按预期工作,使C列保留值0.0:

// This is your input string
String value = "SomeValue";

// Your query goes here
PreparedStatement s = connection.prepareStatement(
    "UPDATE TheTable SET XmlField = ? WHERE Id = ?");

// Convert the input string to bytes according to the UTF-8 character encoding
byte[] varBinary = value.getBytes(StandardCharsets.UTF_8);

// Set the XmlField parameter in the prepared statement.
s.setBytes(1, varBinary)

// ID field
s.setInt(2, 42)

结果:

CREATE TABLE #temp1(a int, b int)
INSERT #temp1 values(1,1),(2,2)

DECLARE @var numeric(10,1) set @var = 0.0
 SELECT a,
        b,
        @var c
 INTO #tmp2
 FROM #temp1

 SELECT * from #tmp2

答案 1 :(得分:0)

首先,您的SQL不正确,您需要在SELECT列表中为@var指定列名。其次,我无法重现这个问题。我使用的是SQL Server 2014,它从#tmp2返回0.0,而不是0。