我有一个A这样的矩阵
A=
4.0000 120.0000 92.0000 0 0 37.6000 0.1910 30.0000
10.0000 168.0000 74.0000 0 0 38.0000 0.5370 34.0000
10.0000 139.0000 80.0000 0 0 27.1000 1.4410 57.0000
1.0000 139.0000 60.0000 23.0000 846.0000 30.1000 0.3980 59.0000
5.0000 136.0000 72.0000 19.0000 175.0000 25.8000 0.5870 51.0000
7.0000 121.0000 0 0 0 30.0000 0.4840 32.0000
Run Code Online (Sandbox Code Playgroud)
我想做两件事:
所以期望的结果矩阵将是:
A=
4.0000 0.0000 92.0000 0 0 37.6000 0.1910 30.0000
0.0000 4.0000 74.0000 0 0 38.0000 0.5370 34.0000
0.0000 1.0000 80.0000 0 0 27.1000 1.4410 …Run Code Online (Sandbox Code Playgroud) 什么在SQL Server中使用效率更高:pow(x,1/2)或sqrt(x)?哪一个成本更低,哪一个更快?
该表(我将传递给ASSEMBLY)在其他存储过程中计算...
我在想这样的事情.
-- I have a stored proc that gets a table, let it be myStoredProcTable
--FIST ENABLE DATA ACCESS
EXEC sp_serveroption 'TheServerName', 'DATA ACCESS', TRUE
--main.sql calls yStoredProcTable.sql and the calls functionAssembly
SELECT *
INTO #tmpTable
FROM OPENQUERY(SERVERNAME, 'EXEC test.dbo.myStoredProcTable 1')
-- pass the table to assembly
-- how would i pass the table to assembly code?, Is this POSSIBLE?
EXEC functionAssembly #tmpTable
Run Code Online (Sandbox Code Playgroud)
- - - - - - - - …
有一个转换double[] d为IntPtrlike 的方法:
public static IntPtr DoubleArrayToIntPtr(double[] d)
{
IntPtr p = Marshal.AllocCoTaskMem(sizeof(double) * d.Length);
Marshal.Copy(d, 0, p, d.Length);
return p;
}
Run Code Online (Sandbox Code Playgroud)
什么是做的最好的方式int[],float[]我想在做每类一个方法,如添加INT []等:
public static IntPtr IntArrayToIntPtr(int[] d)
{
IntPtr p = Marshal.AllocCoTaskMem(sizeof(int) * d.Length);
Marshal.Copy(d, 0, p, d.Length);
return p;
}
Run Code Online (Sandbox Code Playgroud)
1.可以将这个方法被推广,如果是的话怎么样?
2.是否有可能只在一行代码中获取指针(As Marshal是无效方法)?
有没有办法在SQL Server的存储过程中通过索引访问列?
目的是计算大量列.我正在阅读关于游标的内容,但我不知道如何应用它们.
让我解释一下我的问题:
我有一排像:
field_1 field_2 field_3 field_4 ...field_d Sfield_1 Sfield_2 Sfield_3...Sfield_n
1 2 3 4 d 10 20 30 n
Run Code Online (Sandbox Code Playgroud)
我需要计算类似的东西 (field_1*field1) - (Sfield_1* Sfiled_1) / more...
因此结果存储在表列中d次.
所以结果就是一张d column * d row桌子.
由于列数是可变的,我正在考虑制作动态SQL,在字符串中获取列的名称并拆分我需要的列,但这种方法使问题更难.我认为通过索引获取列号可以使生活更轻松.
我有一个变量表:
DECLARE @A_Table TABLE(ID INT, att1 VARCHAR(100), att2 nvarchar(200))
Run Code Online (Sandbox Code Playgroud)
我想制作动态sql,所以我在这个表中插入了一些数据(都在循环内):
WHILE (@i <= 100) BEGIN
SELECT @other_att = NAME FROM @other_Table where ID = @i;
SET @sql = 'INSERT ' + @A_Table+ '(ID,att1,att2) SELECT '+CAST(@i AS VARCHAR)+' , '''+ @other_att+''', SUM('+ @other_att') FROM '+ @EVEN_OTHER_Table;
EXEC (@sql);
END
Run Code Online (Sandbox Code Playgroud)
sql每次看起来像:
INSERT INTO @A_Table SELECT 1 , 'subject', SUM(subject)
INSERT INTO @A_Table SELECT 2 , 'age', SUM(age)
INSERT INTO @A_Table SELECT 3 , 'sex', SUM(sex)....
Run Code Online (Sandbox Code Playgroud)
并执行此操作后:我会得到:
@A_Table:
id att1 att2
1 subject …Run Code Online (Sandbox Code Playgroud) 我见过这样的:
EXEC master.dbo.xp_cmdshell
Run Code Online (Sandbox Code Playgroud)
什么master指的是?
更新
为什么有时会有两点:
master..
Run Code Online (Sandbox Code Playgroud)
一般我们会使用master.dbo. 我是正确的,所以为什么有些人写master..?
给定R中的两个浮点矩阵,我希望得到每个条目之间的相对误差,然后在所有错误中搜索所有错误的最大值并将其与10%进行比较,即 MAX_ERROR <= 10%
我知道raltive错误是(对于每个条目):
|v_ij(MATRIX1) - v_ij(MATRIX2)| / | v_ij(MATRIX1)|
Run Code Online (Sandbox Code Playgroud)
如何做到这一点R,避免for循环?