我有一些数据,我想根据可能存在或不存在的分隔符进行拆分.
示例数据:
John/Smith
Jane/Doe
Steve
Bob/Johnson
Run Code Online (Sandbox Code Playgroud)
我使用以下代码将此数据拆分为名字和姓氏:
SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
结果我想:
FirstName---LastName
John--------Smith
Jane--------Doe
Steve-------NULL
Bob---------Johnson
Run Code Online (Sandbox Code Playgroud)
只要所有行都具有预期的分隔符,此代码就可以正常工作,但是当行没有时出错:
"Invalid length parameter passed to the LEFT or SUBSTRING function."
Run Code Online (Sandbox Code Playgroud)
如何重写这个才能正常工作?
我有一个数据表,dtFoo,并希望得到满足一定条件的行数.
编辑:此数据不存储在数据库中,因此使用SQL不是一个选项.
在过去,我使用以下两种方法来完成此任务:
方法1
int numberOfRecords = 0;
DataRow[] rows;
rows = dtFoo.Select("IsActive = 'Y'");
numberOfRecords = rows.Length;
Console.WriteLine("Count: " + numberOfRecords.ToString());
Run Code Online (Sandbox Code Playgroud)
方法2
int numberOfRecords = 0;
foreach (DataRow row in dtFoo.Rows)
{
if (row["IsActive"].ToString() == "Y")
{
numberOfRecords++;
}
}
Console.WriteLine("Count: " + numberOfRecords.ToString());
Run Code Online (Sandbox Code Playgroud)
我的店铺正在努力标准化一些事情,这是一个问题.我想知道哪种方法在性能方面最好(以及为什么!),以及最常用的方法.
此外,有更好的方法来达到预期的效果吗?
我试图将一些数据汇总到一个报告中,并需要连接其中一个表的行值.这是基本的表结构:
评测
ReviewID
ReviewDate
Run Code Online (Sandbox Code Playgroud)
评审
ReviewerID
ReviewID
UserID
Run Code Online (Sandbox Code Playgroud)
用户
UserID
FName
LName
Run Code Online (Sandbox Code Playgroud)
这是M:M的关系.每个评论都可以有很多评论者; 每个用户都可以与许多评论相关联.
基本上,我想要看的是Reviews.ReviewID,Reviews.ReviewDate,以及该Review的所有相关用户的FName的串联字符串(逗号分隔).
代替:
ReviewID---ReviewDate---User
1----------12/1/2009----Bob
1----------12/1/2009----Joe
1----------12/1/2009----Frank
2----------12/9/2009----Sue
2----------12/9/2009----Alice
Run Code Online (Sandbox Code Playgroud)
显示这个:
ReviewID---ReviewDate----Users
1----------12/1/2009-----Bob, Joe, Frank
2----------12/9/2009-----Sue, Alice
Run Code Online (Sandbox Code Playgroud)
我发现这篇文章描述了一些方法,但是大多数方法似乎只处理一个表而不是多个; 不幸的是,我的SQL-fu不够强大,无法根据我的情况进行调整.我对该网站上使用FOR XML PATH()的示例特别感兴趣,因为它看起来最干净,最直接.
SELECT p1.CategoryId,
( SELECT ProductName + ', '
FROM Northwind.dbo.Products p2
WHERE p2.CategoryId = p1.CategoryId
ORDER BY ProductName FOR XML PATH('')
) AS Products
FROM Northwind.dbo.Products p1
GROUP BY CategoryId;
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我一把吗?任何帮助将不胜感激!
使用Sql Server 2008,是否有类似于Visual Studio中的#region的功能?
我知道节点似乎允许折叠SQL段,但据我所知,这是基于SQL语句的语法.
虽然这接近我所追求的,但我想知道是否有一种方法可以定义一段代码,无论语法如何,类似于#region/#endregion.
有什么想法吗?
我有下表:
TestTable
ColumnA
Column1
Column2
Column3
Column4
Run Code Online (Sandbox Code Playgroud)
我想编写一个简单的SQL语句来检查ColumnA,并根据它是否为null返回某些列.
像(伪)的东西:
If ColumnA Is Null
SELECT ColumnA, Column1, Column2
FROM TestTable
Else
SELECT ColumnA, Column3, Column4
FROM TestTable
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有以下收件箱文件夹结构:
Inbox
--ABC
----ABC 2
----ABC 3
--XYZ
----XYZ 2
--123
----123 A
----123 B
----123 C
Run Code Online (Sandbox Code Playgroud)
我正在使用Exchange Web服务和以下代码来查找收件箱文件夹的子文件夹:
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.AutodiscoverUrl("MyName@MyDomain.com");
Mailbox mb = new Mailbox("MyName@MyDomain.com");
FindFoldersResults findResults = service.FindFolders(
WellKnownFolderName.Inbox,
new FolderView(int.MaxValue));
foreach (Folder folder in findResults.Folders)
{
Console.WriteLine(folder.DisplayName);
}
Run Code Online (Sandbox Code Playgroud)
这部分有效,因为它返回ABC,XYZ和123文件夹; 不幸的是,它没有返回每个文件夹内的文件夹(ABC 2,ABC 3,XYZ 2,123 A,123 B,123 C).
此外,文件夹可能在其中具有多个级别的子文件夹.
如何编写此代码,以便它将返回所有子文件夹,无论它们的嵌套程度如何?
我有一个客户表,并希望以循环方式为每个客户分配销售人员.
Customers
--CustomerID
--FName
--SalespersonID
Salesperson
--SalespersonID
--FName
Run Code Online (Sandbox Code Playgroud)
所以,如果我有15个客户和5个销售人员,我希望最终结果看起来像这样:
CustomerID -- FName -- SalespersonID
1 -- A -- 1
2 -- B -- 2
3 -- C -- 3
4 -- D -- 4
5 -- E -- 5
6 -- F -- 1
7 -- G -- 2
8 -- H -- 3
9 -- I -- 4
10 -- J -- 5
11 -- K -- 1
12 -- L -- 2
13 -- M -- 3
14 …Run Code Online (Sandbox Code Playgroud) 在C#WinForms应用程序中,我使用System.IO.Diagnostics.Process.Start(fileName)来打开文件.文件类型可以是.doc,.docx,.xls,.xlsx,.csv,.pdf或.txt.
有没有办法强制这些文件以只读方式打开?
我收到一个非规范化的文本文件,必须加载到规范化的表中.
非规范化表:
客户ID - 类别 - 类别2 - 类别3 - 类别4
1 - A - B - C - D.
当这被标准化时,它应该看起来像:
客户ID - 类别
1 - A
1 - B
1 - C
1 - D.
编写T-SQL语句以实现此目的的最佳方法是什么(SQL Server 2008)?
我有一个包含以下数据的DataTable:
Salesman---ClientID
Bob--------1
Bob--------2
Bob--------3
Tom--------4
Joe--------5
Joe--------6
Tim--------7
Tim--------8
Run Code Online (Sandbox Code Playgroud)
由此,我想了解每个推销员有多少客户.在这种情况下:
Salesman---CountOfClients
Bob--------3
Tom--------1
Joe--------2
Tim--------2
Run Code Online (Sandbox Code Playgroud)
此程序正在读取包含此数据的文本文件,并且未连接到数据库,因此SQL不是一个选项.
使用C#,我如何才能达到预期的效果?
sql ×6
sql-server ×5
c# ×4
t-sql ×3
count ×2
datatable ×2
criteria ×1
oracle ×1
readonly ×1
recursion ×1
region ×1
round-robin ×1
sql-update ×1
winforms ×1