.NET 2.0 (LINQ 없음)에서이를 수행하려면 (예 : 함수를 작성하지 않고 SQL-Server ReportingServices) :
VB.NET
Dim a As String = "", b As String = "b", c As String = "", d As String = "d", e As String = ""
Dim lala As String = String.Join(" / ", String.Join(vbBack, New String() {a, b, c, d, e}).Split(New Char() {ControlChars.Back}, System.StringSplitOptions.RemoveEmptyEntries))
System.Console.WriteLine(lala)
C # (Google에서 방문하고 VB.NET을 검색하지 않는 경우)
string a = "", b = "b", c = "", d = "d", e = "";
string lala = string.Join(" / ",
string.Join("\u0008",
new string[] { a, b, c, d, e }
).Split(new char[] { '\u0008' }, System.StringSplitOptions.RemoveEmptyEntries)
);
System.Console.WriteLine(lala);
이것은 문자 백 스페이스가 문자열에서 발생하지 않는다고 가정합니다 (이 문자를 키보드로 간단히 입력 할 수 없기 때문에 일반적으로 true 여야합니다).
또한 데이터베이스에서 값을 가져 오면 SQL에서 직접 수행 할 수 있으므로 훨씬 간단합니다.
PostgreSQL 및 MySQL :
SELECT
concat_ws(' / '
, NULLIF(searchTerm1, '')
, NULLIF(searchTerm2, '')
, NULLIF(searchTerm3, '')
, NULLIF(searchTerm4, '')
) AS RPT_SearchTerms;
그리고 영광스러운 MS-SQL-Server로도 가능합니다 (PS : 그것은 풍자입니다) :
DECLARE @in_SearchTerm1 nvarchar(100)
DECLARE @in_SearchTerm2 nvarchar(100)
DECLARE @in_SearchTerm3 nvarchar(100)
DECLARE @in_SearchTerm4 nvarchar(100)
SET @in_SearchTerm1 = N'a'
SET @in_SearchTerm2 = N''
SET @in_SearchTerm3 = N'c'
SET @in_SearchTerm4 = N''
SELECT
COALESCE
(
STUFF
(
(
SELECT ' / ' + RPT_SearchTerm AS [text()]
FROM
(
SELECT NULLIF(@in_SearchTerm1, N'') AS RPT_SearchTerm, 1 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm2, N'') AS RPT_SearchTerm, 2 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm3, N'') AS RPT_SearchTerm, 3 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm4, N'') AS RPT_SearchTerm, 4 AS RPT_Sort
) AS tempT
WHERE RPT_SearchTerm IS NOT NULL
ORDER BY RPT_Sort
FOR XML PATH(N''), TYPE
).value('.', 'nvarchar(MAX)')
,1
,3
,N''
)
,N''
) AS RPT_SearchTerms