我有一个SQL表,如下所示。我想使用表格中的2个字段生成字符串。
A B
M1 tiger
M1 cat
M1 dog
M3 lion
我想在这个表中读取,计算行数,并将其存储在字符串变量中,如String1 = M1_tiger,String2 = M1_cat等。最好的方法是什么?
答案 0 :(得分:1)
您可以执行concat类型查询。
SELECT (Table.A + '_' + Table.B) AS A_B, COUNT(*) AS RowsCount FROM Table
我认为您的表名是"表",您将找到所需字符串的结果将是名为A_B的列,每条记录在每条记录中都有两件事,一个是你要求的字符串,另一个列总是相同的,你表上的记录总数。
计数部分有点简单,但请查看此链接,以便您可以使用所需的具体计数:http://www.w3schools.com/sql/sql_func_count.asp
答案 1 :(得分:0)
你可以试试这个:
SELECT CONCAT(A, '_', B) FROM yourtable
答案 2 :(得分:0)
当你说"读到这个表"时,你的意思是把它读成像C#这样的编程语言吗?或者你想动态创建sql变量吗?
您可能希望使用表变量来存储字符串而不是单个变量。关于获取行号,您可以使用类似:
WITH CTE AS
(
SELECT A, B,
ROW_NUMBER() OVER (order by OrderDate) AS 'RowNumber'
FROM MyTable
)
SELECT A,B,RowNumber FROM CTE
有关如何选择使用表变量的更多信息,请参阅此答案。 SQL: Dynamic Variable Names
答案 3 :(得分:0)
如果您使用的是Oracle,您也可以这样做:
选择A ||' _' || B. 来自你的表
答案 4 :(得分:0)
PostgreSQL解决方案
CREATE SEQUENCE one;
SELECT array_to_string(array_agg(concat('String',nextval('one'),' = ',A,'_',B)), ', ')
AS result
FROM test_table;
DROP SEQUENCE one;
<强>解释强>
nextval
功能。 查询的输出(对于test_table中的两个测试行):
result
-------------------------------------------
String1 = M1_tiger, String2 = M1_cat
(1 row)