使用SQL Server,如何拆分字符串以便访问项目x?
拿一个字符串"Hello John Smith".如何按空格分割字符串并访问索引1处应该返回"John"的项目?
我试图将数组参数传递给C#中的SQL commnd,如下所示,但它不起作用.有没有人见过它?
string sqlCommand = "SELECT * from TableA WHERE Age IN (@Age)";
SqlConnection sqlCon = new SqlConnection(connectString);
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlCon;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sqlCommand;
sqlComm.CommandTimeout = 300;
sqlComm.Parameters.Add("@Age", SqlDbType.NVarChar);
StringBuilder sb = new StringBuilder();
foreach (ListItem item in ddlAge.Items)
{
if (item.Selected)
{
sb.Append(item.Text + ",");
}
}
sqlComm.Parameters["@Age"].Value = sb.ToString().TrimEnd(',');
Run Code Online (Sandbox Code Playgroud) 我有一个SQL Server 2008 R2列包含一个字符串,我需要用逗号分隔.我在StackOverflow上看到了很多答案,但它们都不适用于R2.我确保我对任何拆分函数示例都有选择权限.任何帮助非常感谢.
我在SQL Server 2005中有以下测试表:
CREATE TABLE [dbo].[TestTable]
(
[ID] [int] NOT NULL,
[TestField] [varchar](100) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
填充:
INSERT INTO TestTable (ID, TestField) VALUES (1, 'A value'); -- Len = 7
INSERT INTO TestTable (ID, TestField) VALUES (2, 'Another value '); -- Len = 13 + 6 spaces
Run Code Online (Sandbox Code Playgroud)
当我尝试使用SQL Server LEN()函数找到TestField的长度时,它不计算尾随空格 - 例如:
-- Note: Also results the grid view of TestField do not show trailing spaces (SQL Server 2005).
SELECT
ID,
TestField,
LEN(TestField) As LenOfTestField, -- Does not include trailing …Run Code Online (Sandbox Code Playgroud) 我试图将Excel工作表(.xlsx文件)中的数据读入SQL Server 2008中的表.我希望每天作为批处理作业运行,因此希望在存储过程中编写SQL代码来执行此操作.
有人能帮助我吗?我有管理员权限.
〜TIA
我到处搜索,我无法在任何地方找到这个实现.
让我说我有这个词: QWERTY
我想获得这张桌子:
Q
W
E
R
T
Y
Run Code Online (Sandbox Code Playgroud)
或者QWERTY AnotherWord我想获得
Q
W
E
R
T
Y
[space character here]
A
n
o
t
h
e
r
W
o
r
d
Run Code Online (Sandbox Code Playgroud) 我想将变量设置为一串值.例如
declare @FirstName char(100)
select @FirstName = 'John','Sarah','George'
SELECT *
FROM Accounts
WHERE FirstName in (@FirstName)
Run Code Online (Sandbox Code Playgroud)
我在行中遇到语法错误select @FirstName = 'John','Sarah','George':
Incorrect syntax near ','
Run Code Online (Sandbox Code Playgroud)
有什么办法可以用多个值设置变量吗?
我有这个参数
@ID varchar = ‘1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20’
Run Code Online (Sandbox Code Playgroud)
我想做一些事情来分割逗号分隔值.
该string_split功能不起作用,我收到此错误:
STRING_SPLIT功能仅在兼容级别130下可用
我尝试更改我的数据库并将兼容性设置为130,但我没有此更改的权限.
我试图将多值字符串参数传递给SQL Server 2012存储过程中的表类型参数.我将此代码粘贴到SSRS的数据集中:
DECLARE @mylist clinic_list_tbltype
INSERT @mylist(n) VALUES (@pm_ChooseClinics)
EXEC sp_Skillset_Summary_With_Callbacks_Report @mylist, @pm_ChooseInterval, @pm_StartDateTime, @pm_EndDateTime
Run Code Online (Sandbox Code Playgroud)
clinic_list_tbltype是我用一个名为"n"的varchar(50)字段创建的表类型.我可以像这样从SSMS调用这个存储过程(它会很快恢复):
DECLARE @mylist clinic_list_tbltype
INSERT @mylist(n) VALUES ('clinicA'), ('clinicB')
EXEC sp_Skillset_Summary_With_Callbacks_Report @mylist, 'Daily', '6/3/2014', '6/9/2014'
Run Code Online (Sandbox Code Playgroud)
我只能在SSRS中运行一个诊所(但速度非常慢),但如果我尝试不止一个,就会出错
INSERT语句中的列数少于Values子句中指定的值
.即使运行一个clnic它也可以运行,但与在SSMS中运行查询相比,它需要非常长的时间.比如2分钟对1秒.一定是因为我正在通过('clinicA','clinicB')而不是('clinicA'),''clinicB').
怎么做?
sql-server stored-procedures reporting-services sql-server-2012
我有一个varchar @ a ='a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p',有| 划定的价值观.我想将此变量拆分为数组或表.有没有人对此有任何想法.
我将以下字符串变量拆分为临时表.
示例:
DECLARE @Str VARCHAR(MAX) = '10000,200000'
Run Code Online (Sandbox Code Playgroud)
现在我希望它存储在#Temp表中.
像这样:
表: #Temp
Cola Colb
--------------
10000 200000
Run Code Online (Sandbox Code Playgroud) 我需要在数据库中填充纬度和经度的列,但原始信息存储为单个字符串
例如.
UDFChar1 = 41.243223,-8.183913
Run Code Online (Sandbox Code Playgroud)
我猜这个TRIM命令在这里会有用,但我不知道如何告诉它在每一半的逗号上完全停止.
我希望能够提出的是一个简单的UPDATE查询,如下所示:
UPDATE Asset
SET Lattitude = (SELECT LTRIM(UDFChar1)),
Longitude = (SELECT RTRIM(UDFChar1))
Run Code Online (Sandbox Code Playgroud)
但显然在LTRIM和RTRIM部分有一些额外的工作,所以我只选择最多的数据,而不包括UDFChar1中的逗号
关于如何实现这一点的任何想法?
我在一列 pf 表数据中有管道分隔的数据,就像这样
我想将该数据放在不同的列中,就像这样
如何将管道分隔的数据分成不同的列是 SQL?
我试着做这样的事情
;WITH GRNSumm AS (
SELECT Value
,ID = Row_Number() OVER (ORDER BY Value)
FROM [Split]('asfasdjfsdg|sdhgs|sdg|sdgl','|')
)
SELECT
col1 = MAX(CASE WHEN ID = 1 THEN Value ELSE NULL END)
, col2 = MAX(CASE WHEN ID = 2 THEN Value ELSE NULL END)
, col3 = MAX(CASE WHEN ID = 3 THEN Value ELSE NULL END)
, col4 = MAX(CASE WHEN ID = 4 THEN Value ELSE NULL END)
into #tempdata
FROM GRNSumm
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用