---
title: "T-SQL Coding Standards"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/122115-t-sql-coding-standards"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Engine^"
published: "2005-02-09T19:29:45.000Z"
updated: "2005-02-16T19:42:53.000Z"
replies: 6
views: 396
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/122115-t-sql-coding-standards"
---

# T-SQL Coding Standards

## #1 — Engine^, 2005-02-09T19:29Z

Eftersom jag och många andra gillar lättläst kod tänkte jag att följande artikel kan vara läsvärd.

<http://msdn.microsoft.com/sql/default.aspx?pull=/library/en-us/dnsqlpro04/html/sp04l9.asp>

Permalänk: https://www.webforum.nu/p/122115

## #2 — Brimba, 2005-02-11T12:49Z

Jag skulle aldrig formatera min kod på det sättet. Väldigt otydligt tycker jag. Såhär skriver jag:

```
SELECT 
	C.Name, 
	E.NameLast,
	E.NameFirst,
	E.Number,
	ISNULL(I.Description,'NA') AS Description
FROM 
	tblCompany AS C
	JOIN tblEmployee AS E ON C.CompanyID = E.CompanyID
    	LEFT JOIN tblCoverage AS V ON E.EmployeeID = V.EmployeeID
	LEFT JOIN tblInsurance AS I ON V.InsuranceID = I.InsuranceID
WHERE 
	C.Name LIKE @Name
	AND V.CreateDate > CONVERT(smalldatetime,'01/01/2000')
ORDER BY 
	C.Name,
	E.NameLast,
	E.NameFirst,
	E.Number,
	ISNULL(I.Description,'NA')

SELECT 
	@Retain = @@ERROR, 
	@Rows = @@ROWCOUNT

IF @Status = 0 
	SET @Status = @Retain
```

Förändringar

1: kommatechen direkt efter istället för radbrytning och sedan komma.
2: JOINS på en rad istället för flera
3: Radbrytning och tab efter SELECT, FROM, WHERE osv.
4: Efter IF, gör radbrytning och TAB (4 space)

Sedan har jag lite förtjust i att ge alias av typen t1, t2, t3 osv. Detta för att man ändå sällan vet vad en bokstav står . Däremot tycker jag att ögat tydligare ser t1, t2 osv än att ha olika bokstäver som representerar tabellerna. Men trots att det är vad jag gillar bäst så kan jag inte rekommendera det som en standard utan håller nog med där att man skall försöka korta ner det så som det är gjort här.

Såhär ser det ut med t1,t2 osv :)

```
SELECT 
	t1.Name, 
	t2.NameLast,
	t2.NameFirst,
	t2.Number,
	ISNULL(t4.Description,'NA') AS Description
FROM 
	tblCompany AS t1
	JOIN tblEmployee AS t2 ON t1.CompanyID = t2.CompanyID
    	LEFT JOIN tblCoverage AS t3 ON t2.EmployeeID = t3.EmployeeID
	LEFT JOIN tblInsurance AS t4 ON t3.InsuranceID = t4.InsuranceID
WHERE 
	t1.Name LIKE @Name
	AND t3.CreateDate > CONVERT(smalldatetime,'01/01/2000')
ORDER BY 
	t1.Name,
	t2.NameLast,
	t2.NameFirst,
	t2.Number,
	ISNULL(t4.Description,'NA')

SELECT 
	@Retain = @@ERROR, 
	@Rows = @@ROWCOUNT

IF @Status = 0 
	SET @Status = @Retain
```

Permalänk: https://www.webforum.nu/p/1550383

## #3 — toha, 2005-02-11T15:27Z

Mycket prydligt Brimba. Jag skriver nästa likadant men fler radbrytningar vid join, AND/OR/ELSE samt paranterser på egen rad i where:

```

SELECT 
	C.Name, 
	E.NameLast,
	E.NameFirst,
	E.Number,
	ISNULL(I.Description,'NA') AS Description
FROM 
	tblCompany AS C

[b]	JOIN 
	tblEmployee AS E
	ON 
	C.CompanyID = E.CompanyID

    	LEFT JOIN 
	tblCoverage AS V 
	ON 
	E.EmployeeID = V.EmployeeID

	LEFT JOIN 
	tblInsurance AS I 
	ON 
	V.InsuranceID = I.InsuranceID
	AND
	V.InsuranceID = I.InsuranceID[/b]
WHERE 
	C.Name LIKE @Name
	AND
	V.CreateDate > CONVERT(smalldatetime,'01/01/2000')
[b]	OR
	(
		C.Status = 10
		AND
		C.Name = 'Administrator'
	)[/b]

ORDER BY 
	C.Name,
	E.NameLast,
	E.NameFirst,
	E.Number,
	ISNULL(I.Description,'NA')

SELECT 
	@Retain = @@ERROR, 
	@Rows = @@ROWCOUNT

IF @Status = 0 
	SET @Status = @Retain
```

Permalänk: https://www.webforum.nu/p/1550474

## #4 — ConnyFox, 2005-02-11T15:51Z

Och så har man lärt sig något nytt ;D

Permalänk: https://www.webforum.nu/p/1550490

## #5 — Engine^, 2005-02-11T17:58Z

> **Brimba skrev:**
>
> Jag skulle aldrig formatera min kod på det sättet. Väldigt otydligt tycker jag.

Förmodligen inte jag heller, men det är ju en bra början för dom som funderar på att skriva snyggare kod ;)

Punkterna är väl det jag tycker är mest intressant.

Permalänk: https://www.webforum.nu/p/1550564

## #6 — Hansen, 2005-02-16T07:37Z

Mina har en tendens till att se ut \~ här:

```
   SELECT C.Name, 
          E.NameLast,
          E.NameFirst,
          E.Number
     FROM tblCompany AS C
          JOIN tblEmployee AS E 
            ON( C.CompanyID = E.CompanyID )
          LEFT JOIN tblCoverage AS V 
            ON( E.EmployeeID = V.EmployeeID )
          LEFT JOIN tblInsurance AS I 
            ON(     V.InsuranceID = I.InsuranceID
                AND V.InsuranceID = I.InsuranceID )
    WHERE C.Name LIKE @Name
      AND (    V.CreateDate > CONVERT(smalldatetime,'01/01/2000')
            OR V.CreateDate < CONVERT(smalldatetime,'01/01/2000') 
            OR (     V.CreateDate < CONVERT(smalldatetime,'01/01/2000') 
                 AND V.CreateDate < CONVERT(smalldatetime,'01/01/2000') ) )
 ORDER BY C.Name,
          E.NameLast,
          E.NameFirst,
          E.Number
```

Permalänk: https://www.webforum.nu/p/1555659

## #7 — Lasp, 2005-02-16T19:42Z

Oavsett så har ni ju alla flera bra sätt mot gängse klumpa ihop kod som många sql generatorer levererar.
Det börja ju komma fram en del formaterare så det kanske blir bättre med tiden.
Det viktigaste är väl att man själv förstår att det måste skrivas bättre(mer lättläst) kod.

Permalänk: https://www.webforum.nu/p/1556023

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/122115-t-sql-coding-standards
